2009-11-03 25 views
3

我有一個UIScrollview,它填充了一個橫向屏幕,其中包含UIViews的一個小樹,它可以水平滾動。我想對滾動視圖應用桶形失真,因此子視圖從外部移動到滾動視圖的中心時,它們會改變形狀。將桶形失真應用到UIView

什麼是一個很好的如何應用這種扭曲?

有沒有辦法來覆蓋drawRect滾動視圖,繪製到位圖,扭曲它,然後將其繪製到ScrollView的上下文呢?還是有內置的API來做這種失真?

barrel distortion http://www.arielnet.com/Main/images/fig1f.gif

回答

1

你可以通過適當改造層爲每個UIViews的親近這種效果。使用CATransform3D,您可以旋轉並翻譯3-D中的每個圖層以及apply a perspective effect。對於你的情況,你可以翻譯你的每個UIView圖層,使它們像旋轉木馬一樣,中間視圖向前並直接移動到屏幕上,並且側面圖層從屏幕傾斜並略微凹進。這不會導致圖層本身的曲率(它們仍然會繪製爲矩形),但是如果您在主視圖的圖層上應用變換以創建透視效果,則應該能夠變得非常接近。

對於這種三維定位圖層的例子,我推薦使用this example,其中完整的三維迷宮是由CALayers構建的。

就滾動視圖而言,您可能必須爲此自定義觸摸處理。你也許可以通過重新調用像scrollViewDidScroll這樣的UIScrollViewDelegate方法:但我沒有嘗試過。

相關問題