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:
が、それでもクラッシュします。クラッシュを回避する唯一の方法は、デリゲートの割り当てを削除することですが、実装したいカスタム描画を実行できません。
どうすればこれを機能させることができますか?