0
CoreGraphics 및 CALayers를 사용하여 UIButton에 멋진 그래픽을 그리려하지만, 표시 할 하위 레이어에는 아무 것도 표시 할 수 없습니다.어떻게하면 UIButton의 하위 레이어에 그릴 수 있습니까?
코드는 (내가 NSLog에 중단 점 또는 출력을 설정할 수 있습니다) 호출되는- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)context {
CGRect rectangleFrame = layer.bounds;
UIGraphicsPushContext(context);
UIBezierPath* rectanglePath =
[UIBezierPath bezierPathWithRect: rectangleFrame];
[[UIColor redColor] setFill];
[rectanglePath fill];
UIGraphicsPopContext();
}
:하지만,
- (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:
를 구현 : 여기에
내가 내 계층을 설정하는 방법 아무것도 표시되지 않습니다. 버튼 텍스트가 있거나없는 투명한 버튼 (기본 레이어로 표시) 만 있습니다.
하위 레이어에서 "그리기"를 변경해야하는 이유는 무엇입니까?
서브 레이어의 '프레임'을 프레임이 아닌 버튼 레이어의 '경계'로 설정해야합니다. 비록 그것이 유일한 문제인지 확실하지 않습니다. – omz
Doh .. :-)이 질문을 답으로 제출하여 +1/수락 할 수 있습니까? 일단 누군가가 그것을 지적하면 분명히! 다른 문제가 있으면 알려주세요! 감사. – Thorsten