簡體   English   中英

在從UITableView到UIView的交互式過渡中動畫子視圖

[英]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中可用的新快照視圖非常適合這類事情。

我是自動布局的忠實粉絲,但使用約束的過渡動畫太復雜了。 但是,您可以假設在轉換開始時,您的視圖已經布局,因此您可以應用以下原則:

  • 將傳入視圖添加到視圖層次結構中
  • 在此基礎上創建一個空白畫布視圖
  • 創建外發視圖的快照並將其添加到畫布
  • 創建傳入視圖的快照並將其添加到畫布
  • 在兩者之間執行動畫
  • 刪除畫布

由於布局已經發生,您可以在這些快照上使用現有視圖的centerframe屬性,並僅為這些屬性設置動畫。 它使代碼更容易閱讀。 這就是Augie上面評論的內容。

在您的情況下,您可以通過將所選單元格的各種視圖綁定到傳入控制器的視圖,並將它們設置為新位置來獲得您所獲得的效果。

我已經在GitHub上提供了這個轉換的示例項目。 最終效果如下:

示例視頻

這只是一個快速示例,用於說明如何執行動畫。 在生產代碼中,您可能使參與控制器符合協議,在協議中它們返回了許多視圖以用於轉換,而不是直接公開屬性並將轉換綁定到這些特定類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM