0
我想用CoreGraphics和CALayers在UIButton上繪製一些花哨的圖形,但是我無法獲取任何要顯示的子圖層。如何在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只是實現這樣的:
- (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),但沒有任何顯示:我只是有一個透明的按鈕(如主層所示),有和沒有任何按鈕文本。
我必須更改爲「繪製」子圖層上的什麼?
您應該將子圖層的「frame」設置爲按鈕圖層的「bounds」,而不是其框架。不知道這是否是唯一的問題。 – omz
Do .. :-)你可以提交這個答案,以便我能+ 1 /接受它嗎?很明顯,一旦有人指出!請讓我知道是否還有其他問題!謝謝。 – Thorsten