2016-09-29 39 views
5

當在Instagrams中的故事之間滑動新功能「Stories」(您知道從一個故事轉到另一個故事時,類似於多維數據集的轉換),我無法理解他們是如何做到的!Instagram故事多維數據集在iOS中如何轉換?

首先,如果你深入挖掘的功能,你會發現它的工作原理完全一樣UIPageViewControllers過渡:

- 從一個視圖到另一個快速滑動時,它反彈。
- 您可以通過觸摸屏幕在轉換中間暫停滑動。

的開發團隊不可能使用的基礎上更知道變通辦法在那裏的解決方案,例如:
https://www.appcoda.com/custom-view-controller-transitions-tutorial/
因爲據我所知,上面我的兩個語句是不可能實現任何事情比其他PageViewController。

這讓我想到Instagram開發團隊獲得了對PageViewController的新過渡樣式的訪問,也稱爲Cube-scroll,還是我不知道的解決方法?

任何想法?

+1

不知道你的兩點如何暗示'UIPageViewController'。觀看[這裏](https://developer.apple.com/videos/play/wwdc2016/216/)解釋瞭如何在任何兩個視圖控制器之間進行交互式,可中斷的自定義轉換。 – beyowulf

+0

第一點我的意思是當做一個快速的滑動手勢,分頁到下一個視圖發生,但由於滑動手勢太快,分頁也彈跳到下一個視圖,因此該視圖的某些像素也顯示,然後再回到正確的觀點。 這種行爲是我在UIPageViewController或ScrollViews中僅在啓用分頁時纔看到的。 我會看看視頻。我打算爲此找到一個可行的解決方案,所以我希望能夠回答一些問題或提供解決方法。 – alengqvist

回答

5

我在一段時間後重新創建了這個功能。您可以檢查GitHub上的源代碼:https://github.com/oyvind-hauge/OHCubeView

我正在使用滾動視圖(啓用分頁),對於每個子視圖,我將它們作爲給定視圖的當前x軸偏移量的函數視圖。實際動畫是使用核心動畫在每個子視圖的圖層上完成的(更具體地說,使用方法CATransform3DRotate轉換單位矩陣,由CATransform3DIdentity給出)。

陰影效果也適用於子視圖的圖層(view.layer.opacity),陰影的數量由屏幕上顯示多少視圖決定。

我的實現解決了您的兩個問題(刷卡時彈跳,可以暫停刷卡)。我相信這也可以使用UIPageViewController實現,但我討厭與這些工作。

+0

你知道如何使用ios 8工作嗎?有什麼方法可以修改它嗎?我真的很想使用它,它非常適合我在做什麼,但真的想讓我的應用程序與ios 8兼容。 –

+0

這很棒,你想使用它。自從我查看代碼以來已經有一段時間了,但是讓我在這方面回覆你。 –

+1

@WayneFilkins,所以我無法支持iOS 8的原因是因爲我使用的是UIStackView,它只能從iOS 9中獲得。這個類不容易刪除,因爲它是實現的基礎部分。爲此事道歉。 –

0

我想你是在這裏超過控制器的一部分。使用CATransformLayer和三面立方體式視圖結構可以輕鬆實現該效果,其中有一個視圖與屏幕平面對齊,另外兩個視圖在y軸上旋轉-90和90度。然後,獲得一個平移手勢來旋轉場景。在成功旋轉90度(在任一方向)之後,您可以快速重置場景(以便保持旋轉似乎繼續,但實際上相機移回到初始位置),或者您可以完全旋轉360度,並只更新上一個和下一個「頁面」。一個控制器可以處理這個場景。如果您希望將每個頁面作爲控制器,則可以繼續使用場景中的一個控制器,然後將頁面控制器用作子控制器,並按上述方式設置其視圖。

有關CATransformLayer的更多信息,請參閱this文章。他們的例子已經創造了非常接近你需要的東西。