[英]Animating subviews in an interactive transition from the UITableView to a UIView
對於僅支持iOS7的應用程序,我有一個UITableView(雖然如果有幫助的話,將它更改為UICollectionView會是學術性的),其中單元格如下所示:
+----------------------------------+=======+
| Label1 | sub- |
| Label2 Label3 | view |
+----------------------------------+=======+
我想轉換到第二個視圖,其中子視圖縮小為更大,標簽位置更改,更像是這樣:
+----------+
| |
| subview |
| |
+----------+
Label1
Label2
Label3
這類似於iOS7日歷應用程序,其中視圖正在轉換並在途中為部件設置動畫。 我知道我需要實現UIViewControllerAnimatedTransitioning
,但我在概念上遇到類似這樣的問題會有問題。 我是否隱藏了單元格的子視圖,用新視圖的子視圖替換它們但是在同一個地方,然后設置動畫? 還是有一種不太復雜的方式? 任何示例代碼都將受到贊賞,因為我發現的所有示例都沒有從一個視圖到另一個視圖的子視圖。
ETA:我越想到這一點,我就越想知道:使用帶有流布局的UICollectionView可以更好地處理這個問題,並且只需要將細節調整為將單元格大小調整為屏幕的完整大小嗎?
我認為,iOS7日歷動畫是通過集合視圖動畫過渡布局來完成的,這對於這種情況來說很棒,但並不是你想要的。 此外,它們似乎讓您在同一個視圖控制器中,這可能不適合您在上面描述的主 - 細節場景。
我最近一直在玩動畫過渡,並發現iOS7中可用的新快照視圖非常適合這類事情。
我是自動布局的忠實粉絲,但使用約束的過渡動畫太復雜了。 但是,您可以假設在轉換開始時,您的視圖已經布局,因此您可以應用以下原則:
由於布局已經發生,您可以在這些快照上使用現有視圖的center
或frame
屬性,並僅為這些屬性設置動畫。 它使代碼更容易閱讀。 這就是Augie上面評論的內容。
在您的情況下,您可以通過將所選單元格的各種視圖綁定到傳入控制器的視圖,並將它們設置為新位置來獲得您所獲得的效果。
我已經在GitHub上提供了這個轉換的示例項目。 最終效果如下:
這只是一個快速示例,用於說明如何執行動畫。 在生產代碼中,您可能使參與控制器符合協議,在協議中它們返回了許多視圖以用於轉換,而不是直接公開屬性並將轉換綁定到這些特定類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.