【发布时间】:2012-06-05 20:12:20
【问题描述】:
我正在尝试使用 Quartz 绘制一个精美的 UIButton。我已经像这样声明了自己的按钮类:
@interface MyButton : UIButton
@end
在 .m 文件中,我正在构建按钮:
- (id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self) {
// Initialization code
CALayer *buttonLayer = self.layer;
buttonLayer.masksToBounds = YES;
CALayer *customDrawn = [CALayer layer];
customDrawn.delegate = self;
customDrawn.masksToBounds = YES;
[buttonLayer insertSublayer:customDrawn atIndex:0];
[customDrawn setNeedsDisplay];
}
return self;
}
但这会导致某种递归,最终以EXC_BAD_ACCESS 失败。
我已经实现了一个方法drawLayer: inContext:,但它仍然崩溃。我可以避免崩溃的唯一方法是删除委托分配,但是我无法执行任何我想要实现的自定义绘图。
我怎样才能做到这一点?
【问题讨论】:
-
张贴午餐食物逗号所以我撤回了我的答案,但我在您发布的代码中没有看到任何循环引用
标签: objective-c ios5 uibutton core-graphics