2016-07-30 90 views
0

我有一個在一個View Controller中工作得很好的關鍵幀動畫。然後,我將該代碼複製到另一個類似的VC。不同之處在於,這一次被動畫移動穿過屏幕的視圖更深一層,嵌套在額外的UIView中。這似乎是造成座標問題。將一個視圖動畫化爲另一個層次結構

我得到這個目的地X點就像這樣:

let last_Pos = destinationImg.superview?.convertPoint(destinationImg.frame.origin, toView: nil) 
在關鍵幀

然後,我這樣設置X:

self.animatedView.frame.origin.x = last_Pos!.x 

我同時在做的「last_Pos」打印原來的ViewController和新的。它的x值是465,所以這不是問題。我很確定我的問題是,在第二個VC 465被應用到它嵌套在額外的層/ UIView。我研究了this,但沒有發現太多寫在Swift中,但它似乎像Objective-C有一個這樣做的方式。

我的問題是,如何在這兩個視圖的同一圖層上獲得x值,以便我可以將其中一個動畫到另一個?

回答

0

正如上面所解釋的,我試圖讓「絕對」x位置在不同層次中爲兩個視圖設置動畫。如果您不知道,當您檢查frame.origin.x或frame.origin.y時,您將獲得引用它們父視圖的上下文位置y &。我無法找到有效的答案,也沒有人對此線索做出迴應。

所以......我的回答更像是似乎適用於大多數情況下工作一個補丁,修復工作:

我只是簡單地添加界面生成另一種看法。

  • 我把它命名爲「量尺」
  • ,並使其無形
  • ,並確保它坐在我的下所有的按鈕,這樣就不會阻止按鈕水龍頭等

對於自動佈局約束,我將一端連接到動畫應該從其起始的視圖,並將另一端連接到我希望動畫結束的視圖。神奇的是,它隨着方向變化,iPhone,iPad佈局等而改變寬度和高度。

然後對於我的動畫,我所有的代碼都是檢查「測量棒」的寬度和高度,並將這些值用於更改y。& y。

希望這會有所幫助。

相關問題