2012-01-06 38 views
0

UIView有2個圖像作爲子視圖,剪輯到邊界設置爲yes。如何移動UIView,但相對於超視圖保留其內容位置不變?

我想在動畫塊中移動UIView,但讓子視圖不隨父項移動。如果視圖要向右移動50個點,則會看到更多的第二個圖像,而第一個則更少。

我可以手動移動視圖,並更新與新視圖位置相對的子視圖位置,但我無法弄清楚如何在塊中實現相同的功能。

回答

0

我想你跑步進入限制有與事實的UIView動畫塊使用核心動畫引擎蓋下,與核心動畫動畫一個「演示」層,它是原始視圖/層的副本,這樣做動畫已經安排在了。因此,在您的塊的動畫中,表示層的位置正在改變,但模型視圖的位置保持不變。

由於您提到您可以手動更新視圖位置(以及相反方向的子視圖位置)以實現所需的效果,因此可以考慮在動畫計劃時間創建NSTimer,每秒運行60次(嘗試捕捉每個動畫幀),它簡單地查詢表示層的當前位置(由動畫本身設置+爲動畫指定的任何特殊定時函數),並執行工作以更新基礎模型以與之匹配。

你應該能夠查詢動畫層的位置:

yourUIView.layer.presentationLayer.frame.origin 

然後完成塊添加到您的動畫無效計時器。

之前,你可以訪問視圖的圖層屬性,必須添加到您的項目中

QuartzCore.framework 

乾杯,

+0

我能做到這一點,但它不是真正的動畫塊本身。我可以用NSTimer手動執行它,但我想知道是否有辦法在沒有它的情況下執行此操作。 – TigerCoding 2012-01-06 03:29:27

+0

我看到...但問題是子視圖的位置是相對於超視圖,所以需要額外的工作,他們似乎'不動'。你有什麼理由不能有兩個街區?額外的動畫是爲子視圖,等於第一個,但在相反的方向。 – Bobjt 2012-01-06 10:57:54

+0

嘿,你有答案,因爲我有同樣的問題。 – 2012-01-12 06:07:44

相關問題