亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將透視轉換應用于UIView?

如何將透視轉換應用于UIView?

蠱毒傳說 2019-06-20 16:15:55
如何將透視轉換應用于UIView?我希望在UIView上執行透視圖轉換(如在Coverflow中看到)有沒有人知道這是可能的?我調查過CALayer并且已經瀏覽了所有實用的程序員核心動畫播客,但是我仍然不清楚如何在iPhone上創建這樣的轉換。任何幫助,指針或示例代碼片段都將是非常感謝的!
查看完整描述

3 回答

?
三國紛爭

TA貢獻1804條經驗 獲得超7個贊

正如Ben所說,您需要使用UIView的層,使用CATransform3D來執行層的旋轉。讓視角發揮作用的訣竅,如在此描述,直接訪問CATransform3D(M34)的一個矩陣單元。矩陣數學從來都不是我的專長,所以我無法確切地解釋為什么會這樣做,但它確實如此。您需要將這個值設置為初始轉換的負分數,然后將層旋轉轉換應用到該值。您還應該能夠執行以下操作:

UIView *myView = [[self subviews] objectAtIndex:0];CALayer *layer = myView.layer;CATransform3D rotationAndPerspectiveTransform =
 CATransform3DIdentity;rotationAndPerspectiveTransform.m34 = 1.0 / -500;rotationAndPerspectiveTransform = CATransform3DRotate(rotationA
 ndPerspectiveTransform, 45.0f * M_PI / 180.0f, 0.0f, 1.0f, 0.0f);layer.transform = rotationAndPerspectiveTransform;

為每次旋轉從零開始重建圖層轉換。

可以找到這方面的完整示例(使用代碼)。這里,我在幾個CALYER上實現了基于觸摸的旋轉和縮放,基于BillDudney的一個例子。程序的最新版本,在頁面的最底層,實現了這種透視圖操作。代碼應該是相當簡單的閱讀。

響應中引用的子層轉換是應用于UIView的子層的轉換CALayer..如果你沒有亞層,就不用擔心。我在我的例子中使用子層轉換,原因很簡單,因為在我正在旋轉的一個層中包含了兩個CALYER。


查看完整回答
反對 回復 2019-06-20
?
POPMUISE

TA貢獻1765條經驗 獲得超5個贊

為了補充布拉德的答案,并提供一個具體的例子,我借用我自己的答案在另一篇關于類似主題的文章中。在我的回答中,我創建了一個簡單的斯威夫特游樂場,你可以下載并播放,其中我演示了如何使用簡單的層次結構創建UIView的透視圖效果,并展示了使用transformsublayerTransform..去看看。



查看完整回答
反對 回復 2019-06-20
  • 3 回答
  • 0 關注
  • 657 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號