我正試圖在CALayer上創建一個效果,這樣當用戶觸摸並保持給定點時,整個圖層變形的方式會造成該點被推下的錯覺「(視圖是2D)。數學對我而言似乎相對簡單:CALayer上的每個點都將經歷一個朝向壓力點的平移,與其距離點的距離相反(在此階段,我忽略了框架對這種變形的影響)。想想在2D平面上顯示廣義相對論的經典模型,其質量導致平面變形爲第三個空間維度,只能從平面上方觀察。CALayer壓力變形效果
在這一點上,我已經確定,我不能用仿射變換來做到這一點,因爲原始圖層中的平行線將不再是經過變換的線。
假設這是正確的,有沒有辦法做到這一點?這並不意味着CATransform3D可以做到這一點,因爲簡單地改變3D空間內的視角似乎也不能實現這種效果。
我對轉換矩陣相當陌生,所以我可能會缺少一些基本的東西。或者這可能超出了你可以用核心動畫或核心圖形中的內置選項做的事情(也許它需要OpenGL?)。
可能的幫助:http://ciechanowski.me/blog/2014/05/14/mesh-transforms/ – jrturton
不幸的是,網格轉換不是公共API,所以使用它們會讓你的應用程序從App Store中被拒絕。 –