2012-02-19 51 views
2

在iOS中,我希望在類似於Time Machine的「空間」中有一系列項目。 「空間」將由頁面側面的滾動條導航。因此,如果用戶向上滾動,它將實質上放大空間,距離更遠的物體將更接近參考點。如果一個人縮小,那麼這些物體會褪色到背後,任何參考框架後面的東西都會出現。有點像this使用向前和向後導航創建模擬3D「空間」

我對各種解決方案開放。我想在openGL中有一個相對簡單的解決方案,我只是不知道從哪裏開始。

回答

1

檢查出尼克洛克伍德的iCarousel在github。這是一個非常好的組件。他提供的示例代碼使用非常類似於您所描述的自定義輪播樣式。你應該只做一些調整。

1

正如你所說的,在OpenGL(ES)是比較容易實現的,你問什麼,但它可能不是同樣容易解釋給別人,不自信用OpenGL :)

首先,我建議你看一看The Red Book,OpenGL的參考指南,或者OpenGL Wiki
首先,您可以使用GLUT做一些練習;它將幫助您對OpenGL充滿信心,提供一些高級API,讓您跳過設置OpenGL上下文的無聊方面,讓您直接進入繪圖部分。

OpenGL ES是OpenGL的一個子集,所以本質上具有相同的結構。一旦你瞭解瞭如何使用OpenGL,就不應該如此難以使用OpenGL ES。當然Apple documentation是一個非常重要的資源。

現在你已經知道很多關於OpenGL的東西,你應該能夠很容易地理解你的程序應該如何構造。
例如,你可以保持你的觀點被固定並翻譯世界(或者反之亦然)。當然沒有(當然)通用解決方案,尤其是因爲唯一重要的是最終結果。


另一種解決方案(也許同樣出色,這取決於你的需求),可以是簡單地放大和縮小圖像(佔你的世界的對象)通過對象本身來模擬運動。

例如,您可以使用數組來存儲所有圖像,並使用滑塊來設置(增加/減少)圖像的尺寸。一旦圖像變得太大而不能顯示,你可能會逐漸減少alpha,這樣後面的圖像會慢慢出現。看看UIImageView reference,它包含你需要的所有API。

這可能會導致您失去三維性,但它可能比學習OpenGL更簡單/更快的解決方案。