我的-drawInContext:方法中有一个包含一些复杂绘图代码的图层.我正在尝试最小化我需要做的绘图量,所以我使用-setNeedsDisplayInRect:仅更新已更改的部分.这是非常好的工作.但是,当图形系统更新我的图层时,它会使用交叉淡入淡出从旧图像过渡到新图像.我希望它能立即切换.
我已经尝试使用CATransaction来关闭操作并将持续时间设置为零,并且都不起作用.这是我正在使用的代码:
[CATransaction begin];
[CATransaction setDisableActions: YES];
[self setNeedsDisplayInRect: rect];
[CATransaction commit];
Run Code Online (Sandbox Code Playgroud)
我应该使用不同的CATransaction方法(我也尝试过-setValue:forKey:使用kCATransactionDisableActions,结果相同).
这让我疯狂!我正在制作绘图应用程序.假设我正在制作一张UIView名片.
我在这个视图([sheet.layer addSublayer:...])中添加了一些子图层然后我想要绘制它们.为此,我正在创建一个CGImageRef并将其放入图层中contents.但它是动画的,我不希望这样.
我尝试了一切:
removeAnimationForKey:removeAllAnimationsdelegate[CATransaction setDisableAnimations:YES]这似乎是正确的.我不明白为什么这个图层仍然是动画的; _;
难道我做错了什么?有秘密的方式吗?