以下を使用して、UIView サブクラスでカスタム描画を実行します。
- (void)drawRect:(CGRect)rect;
図面が変更されたときに暗黙的なアニメーションを有効にするにはどうすればよいですか?
以下を使用して、UIView サブクラスでカスタム描画を実行します。
- (void)drawRect:(CGRect)rect;
図面が変更されたときに暗黙的なアニメーションを有効にするにはどうすればよいですか?
他に提案がなかったので、レイヤー デリゲート メソッドを使用しました。おそらく、とにかくそれが唯一のオプションです。
そこで、MyView で新しい CALayer プロパティを作成しました。
-(CALayer*)stylesLayer
{
if (_stylesLayer == nil) {
CALayer *aLayer = [CALayer layer];
aLayer.frame = CGRectMake(0, 0, self.frame.size.width, self.frame.size.height);
if ([self respondsToSelector:@selector(setContentScaleFactor:)])
{
aLayer.contentsScale = self.contentScaleFactor;
}
_stylesLayer = aLayer;
[_stylesLayer retain];
[self.layer addSublayer:aLayer];
[aLayer release];
}
return _stylesLayer;
}
MyViewController では、描画を行うデリゲート メソッドを実装しました。
-(void)drawLayer:(CALayer *)layer inContext:(CGContextRef)context
{
// custom drawing code here
}
ここで、特定のプロパティが変更されたときに、暗黙的にクロス フェード アニメーションを実行する MyViewController からレイヤーを更新します。
-(void)setStyles:(NSArray *)styles
{
[styles retain];
[_styles release];
_styles = nil;
_styles = styles;
[self.myView.stylesLayer setNeedsDisplay];
}