Animation 在进行自定义绘图时,如何在UIView中启用隐式动画?
我使用以下命令在UIView子类中执行自定义绘图:Animation 在进行自定义绘图时,如何在UIView中启用隐式动画?,animation,uiview,custom-draw,Animation,Uiview,Custom Draw,我使用以下命令在UIView子类中执行自定义绘图: - (void)drawRect:(CGRect)rect; 当图形更改时,如何启用隐式动画?因为没有其他建议,我继续使用层代理方法。也许这是唯一的选择 因此,在MyView中,我创建了一个新的CALayer属性: -(CALayer*)stylesLayer { if (_stylesLayer == nil) { CALayer *aLayer = [CALayer layer]; aLayer
- (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];
}