0

我正在尝试使用 CoreGraphics 和 CALayers 在 UIButton 上绘制一些精美的图形,但我无法在子层上显示任何内容。

这是我设置子图层的方式:

- (id)initWithCoder:(NSCoder *)aDecoder
{
    self = [super initWithCoder:aDecoder];
    if (self) {
        // Initialization code
        CALayer *buttonLayer = self.layer;
        buttonLayer.masksToBounds = YES;
        buttonLayer.backgroundColor = [[UIColor clearColor] CGColor];
        self.myDelegate =  [[PlayerButtonLayerDelegate alloc] init];

        CALayer *customDrawn = [CALayer layer];
        customDrawn.delegate = self.myDelegate;
        customDrawn.frame = buttonLayer.frame;
        customDrawn.masksToBounds = YES;
        [buttonLayer insertSublayer:customDrawn atIndex:0];
        [customDrawn setNeedsDisplay];
    }
    return self;
}

PlayerButtonLayerDelegate 只是drawLayer: inContext:这样实现:

- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)context {
    CGRect rectangleFrame = layer.bounds;
    UIGraphicsPushContext(context);
    UIBezierPath* rectanglePath = 
        [UIBezierPath bezierPathWithRect: rectangleFrame];
    [[UIColor redColor] setFill];
    [rectanglePath fill];
    UIGraphicsPopContext();
}

代码被调用(我可以设置断点或输出到 NSLog),但没有显示任何内容:我只有一个透明按钮(如主层所示),有或没有任何按钮文本。

我必须改变什么才能在子图层上“绘制”?

4

1 回答 1

4
 [customDrawn setFrame:buttonLayer.bounds];
于 2012-06-06T22:22:06.780 回答