我的-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 關注
- 640 瀏覽
添加回答
舉報
0/150
提交
取消