我的-drawInContext:方法中有一个包含一些复杂绘图代码的层。我试图尽量减少需要做的绘图,所以我使用-setNeedsDisplayInRect:来仅更新已更改的零件。这是出色的工作。但是,当图形系统更新我的图层时,它会使用淡入淡出功能从旧图像过渡到新图像。我希望它可以立即切换。我尝试使用CATransaction关闭操作并将持续时间设置为零,但都无法正常工作。这是我正在使用的代码:[CATransaction begin];[CATransaction setDisableActions: YES];[self setNeedsDisplayInRect: rect];[CATransaction commit];我应该改用CATransaction上的其他方法吗(我也尝试了-setValue:forKey:和kCATransactionDisableActions,结果相同)。
3 回答
德玛西亚99
TA贡献1770条经验 获得超3个赞
也:
[CATransaction begin];
[CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions];
//foo
[CATransaction commit];
慕工程0101907
TA贡献1887条经验 获得超5个赞
更改图层的属性时,CA通常会创建一个隐式事务对象以使更改动起来。如果您不想为更改设置动画,则可以通过创建显式事务并将其kCATransactionDisableActions属性设置为true来禁用隐式动画。
目标C
[CATransaction begin];
[CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions];
// change properties here without animation
[CATransaction commit];
迅速
CATransaction.begin()
CATransaction.setValue(kCFBooleanTrue, forKey: kCATransactionDisableActions)
// change properties here without animation
CATransaction.commit()
- 3 回答
- 0 关注
- 611 浏览
添加回答
举报
0/150
提交
取消