0
A
回答
0
要在3D中旋轉視圖,您需要修改視圖圖層的transform
屬性。
這聽起來像你想圍繞X軸旋轉視圖。我想你想要透視,靠近觀看者的邊緣看起來更大,離觀看者更遠的邊緣看起來更小。
我們將編寫一個幫助函數進行轉換。我們先從身份轉換:
static CATransform3D transformWithAngle(CGFloat angle) {
CATransform3D transform = CATransform3DIdentity;
然後設置的變換基於從觀衆角度的距離m34
組件:
transform.m34 = -1.0f/300.0f;
如果使用的是300
大的數量,視角會變弱。如果您使用的號碼小於300
,則視角會更強。
接下來,添加旋轉:
transform = CATransform3DRotate(transform, angle, 1, 0, 0);
然後返回變換:
return transform;
}
比方說,你想這個應用到一個名爲self.riseView
視圖。你可能需要的旋轉方向是圍繞視圖的底部邊緣,所以該層的錨點設置爲底邊:
- (void)viewDidLoad {
CGRect frame = self.riseView.frame;
self.riseView.layer.anchorPoint = CGPointMake(0.5f, 1.0f);
self.riseView.frame = frame;
並初始化層與0°的角度變換:
self.riseView.layer.transform = transformWithAngle(0);
}
您可以通過它旋轉到-M_PI_2
的角度進行查看「設置」(旋轉打倒在地平面):
- (IBAction)setButtonWasTapped:(id)sender {
[self animateRiseViewToAngle:-M_PI_2];
}
,你可以把它「上升」(向上旋轉)通過它旋轉到零角度:
- (IBAction)riseButtonWasTapped:(id)sender {
[self animateRiseViewToAngle:0];
}
下面是我們如何真正做動畫:
- (void)animateRiseViewToAngle:(CGFloat)angle {
[UIView animateWithDuration:2 animations:^{
self.riseView.layer.transform = transformWithAngle(angle);
}];
}
相關問題
- 1. 如何將數據從水平鍵變爲垂直數
- 2. 如何在Android中將InfiniteScrollView從水平變爲垂直?
- 3. 將腳本從垂直改爲水平?
- 4. 從垂直面看水平面
- 5. 如何將數據從水平轉置爲垂直
- 6. 如何將按鈕佈局從水平改爲垂直?
- 7. 如何在Xamarin的monotouch中將UISlder從水平改爲垂直?
- 8. 從動態變化水平UL垂直
- 9. 變換垂直信息爲水平
- 10. 屏幕從垂直變爲水平時的背景變形?
- 11. UIView垂直翻轉
- 12. 如何將垂直變化<tr>變爲水平<tr>
- 13. UIView不在UIScrollView裏面垂直滾動
- 14. 將水平表轉換爲垂直Postgres
- 15. 將水平html表反轉爲垂直
- 16. 如何將水平文本淡入垂直漸變中?
- 17. 垂直和水平並行
- 18. 從水平到垂直
- 19. 將水平表格行變換成垂直表格
- 20. 如何將數據從水平復制並粘貼到垂直?
- 21. 如何將圖像設置爲中心(垂直和水平)Bootstrap3
- 22. 如何在SQL中將水平數據顯示爲垂直列?
- 23. 如何將垂直圖例轉換爲水平圖例?
- 24. 如何將水平表轉換爲SSRS中的垂直表?
- 25. 如何將下列垂直列表更改爲水平列表?
- 26. 如何將默認水平ProgressBar更改爲垂直?
- 27. 如何將水平ul轉換爲垂直的電話與CSS?
- 28. 垂直一頁垂直其他頁面水平
- 29. UIView垂直翻轉動畫
- 30. 將垂直行轉換爲水平數據表
澄清:你想從平行於地面的平面變換圖與地面垂直的平面? – 2013-05-13 19:14:45
@MattBall是的,謝謝你:) – Mario 2013-05-13 19:19:01
@MattBall,我真的不明白爲什麼這不是一個真正的問題?顯然,由於語言限制和這個問題的性質,我很難解釋我的自我,但除此之外,我認爲這是一個合法的問題,我在嘗試之前嘗試了很多東西,在谷歌上搜索(不容易搜索這個具體的問題.. ),嘗試玩CATransform3DScale和更多.. MattBall我不明白,你幫助我澄清問題,但隨後關閉q? – Mario 2013-05-14 08:00:13