2013-11-29 51 views
0

注意:我不是在談論自定義視圖控制器轉換效果,可以通過使用自定義視圖控制器它是iOS 5 + API來完成。什麼是實現複雜的自定義視圖控制器的正確方法

我在談論轉換到另一個視圖控制器,其中從當前顯示的視圖控制器的視圖動畫到視圖控制器呈現的視圖。

- 你有friendsViewController,顯示當前用戶的朋友列表。每個表視圖單元格都有一個配置文件圖片和名稱。

- 點擊一個單元格,所有其他單元格消失,名稱和圖片生成頂部。此時,顯示UserProfileViewComtroller。

理論研究

-I可以很容易地通過結合兩個視圖控制器做到這一點,但UserProfileViewComtroller可以從應用程序的其他部分推出。

- 如果UserProfileViewControllers視圖被實例化,我可以用UIViews方法轉換座標

我覺得還有一個更合適/更簡潔的方案在這裏這就是爲什麼我要求社會爲幫助:)

回答

0

不是一個答案,而是一種可能激發解決方案的技巧。我做了一個需要這樣的自定義轉換的應用程序。原來的應用程序自己安排了一個快照,因此在最後一刻用戶正在查看圖像。第二個viewController被創建,給定座標等,然後立即顯示圖像。它將圖像放入其視圖中(子視圖具有相同的邊界)。

在這一點上,第二個vc具有完全的控制權,並且可以在其他一些內容中淡入淡出,反之或多或少地作爲開始 - 圖像被使用,交換,使用被移除以揭示真實的視圖內容。

注意,這花了一點時間來得到它與無毛刺等

編輯工作:如果你擔心在轉向整個原始視圖成圖像,然後修改技術。例如,在原始視圖中,將所有其他內容淡化到黑色,但是單元格,然後快照一個單元格。第二個視圖將以全黑背景開始,並將細胞圖像置於頂部,然後從那裏開始。

編輯2:正如在評論中提到的,你當然推動沒有動畫的第二個視圖,所以它瞬間發生。通過在第二個vc上設置一個小圖像,並在約定的背景下,您可以快速「通過接力棒」這麼說,讓第二個控制器快速無縫地工作。

+0

而延遲呢?在我注意到的舊設備上,截屏需要花費很長時間。你有沒有設法達到一個效果,它在哪裏都很好地生動起來,並且同時 - 不會有任何明顯的延遲? (當所有內容開始動畫時,或者當用戶可以與第二個視圖控制器上的內容進行交互時延遲(因爲當圖像可見/準備好第二個視圖控制器 - 用戶觸摸將被忽略)...? –

+0

我們不會有完美的解決方案。在我的情況下,使用iPhone 4的延遲測試是可以接受的,兩年前我做了這個,所以細節很模糊,不幸的是應用程序不再在商店裏,或者你可能已經看到了它的實際應用。照片到電子郵件,所以任何最初的延遲並不顯眼 –

+1

感謝分享。看起來像這樣做的最佳方式,同時保持您的目的地視圖控制器的靈活性在其他地方使用,不需要花哨的過渡是有一個init參數指定了哪裏,視圖控制器來自David的技術可以通過推動目標視圖控制器而不使用動畫,並將子視圖移動到新的視圖控制器oller,並做你會的:) – jfisk

2

在我看來,你想要的是完全約視圖控制器轉換,因爲你想要做的東西,會看起來像用戶從舊的VC,並將其移動到新的VC。

那麼你是幸運的,因爲你允許在UIView從一個視圖控制器移動到另一個使用[superview addSubview:view]你想做的轉變的一部分。

這可以在任何iOS的版本來完成,雖然它在iOS的7現在更容易爲有它可以訪問兩個VC的觀點,層次結構和可隨意改變他們,你寫(見<UIViewControllerAnimatedTransitioning> reference)委託(移動一個視圖,淡化其他觀點)。另外,在轉換過程中讓你的新視圖控制器透明(或者使用舊控制器的快照)將幫助你隱藏VC改變的事實。

+0

非常好的一點,我實際上只是讀了關於新的UIViewControlleRanimatedTransitioning協議,它可以讓你避免必須推出自己的自定義視圖控制器容器。偉大的提示只是使新的VC的視圖也是透明的! – jfisk

相關問題