[英]How can I move a UIView, but leave its content positions unchanged relative to the superview?
一個UIView有2個圖像作為子視圖,並且剪輯范圍設置為yes。
我想在動畫塊中移動UIView,但是使子視圖不能與父視圖一起移動。 如果視圖是向右移動50個點,則將看到更多的第二張圖像,而看不到第一張圖像。
我可以手動移動視圖,並更新與新視圖位置相對的子視圖位置,但是我無法弄清楚如何在一個塊中實現相同的目的。
我認為您遇到的限制與以下事實有關:UIView Animation塊在后台使用Core Animation,而Core Animation設置了一個“表示”層的動畫,該層是已安排動畫的原始視圖/層的副本上。 因此,在塊的動畫期間,表示層的位置會發生變化,但是模型視圖的位置保持不變。
由於您提到可以手動更新視圖位置(和相反方向的子視圖位置)以獲得所需的效果,因此請考慮在動畫調度時間創建一個NSTimer,該時間每秒運行60次(以嘗試捕獲每個動畫幀),只需查詢表示層的當前位置(由動畫本身+指定為動畫參數的任何特殊計時功能設置),然后執行工作以更新基礎模型以匹配該位置。
您應該能夠通過以下方式查詢動畫層的位置:
yourUIView.layer.presentationLayer.frame.origin
然后,將完成塊添加到動畫中,使計時器無效。
在訪問視圖的layer屬性之前,必須將
QuartzCore.framework
干杯,
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.