2009-08-29 114 views
19

我見過其他人有這個問題,但大多數的反應是不工作的iPhone操作系統的最新3.0版本。無論如何,我想知道如何在沒有來自加速度計的任何輸入的情況下以編程方式旋轉UIView。到目前爲止,我已經找到了代碼:旋轉UIView在可可觸摸

CGAffineTransform transform = CGAffineTransformMakeRotation(3.14159/2); 
view.transform = transform; 
CGRect contentRect = CGRectMake(-80, 80, 480, 320); 
view.bounds = contentRect; 

然而,這不適用於UIView的工作(在我的測試)。有什麼我必須做我的AppDelegate爲了這個/其他代碼的功能,還是有更好的方式做同樣的事情?

感謝您的幫助!

回答

40

這對我的作品

CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI_2); 
self.view.transform = transform; 

// Repositions and resizes the view. 
CGRect contentRect = CGRectMake(0,0, 480, 320); 
self.view.bounds = contentRect; 
+14

使用M_PI而不是3.14159 – 2010-07-05 14:09:39

+32

並使用M_PI_2而不是M_PI/2 – Allyn 2010-11-12 21:36:39

1

我曾與成功:

CATransform3D rotationTransform = CATransform3DIdentity; 
[view.layer removeAllAnimations]; 
rotationTransform = CATransform3DRotate(rotationTransform, angle, 0.0, 0.0, 1); 
view.layer.transform = rotationTransform; 
+0

嗨馬可:在上面的代碼中,「角度」是什麼? – PF1 2009-08-30 22:07:20

+1

此外,即使我已經導入了QuartzCore框架,這似乎也無法建立。 – PF1 2009-08-30 22:15:23

+0

角度是輻射體中視角將被旋轉的角度。由於其他錯誤,它不會建立。構建日誌是什麼意思? – Marco 2009-08-31 09:29:11

0

不知道這是否被認爲是私有的API,所以你可能不希望使用它,但如果你想強制改變方向而不傾斜設備,您可以嘗試撥打電話:

[[UIDevice currentDevice] performSelector:@selector(setOrientation:) 
         withObject:(id)UIInterfaceOrientationLandscapeLeft]; 

我還沒有測試過它仍然適用於3.1.2。儘管我知道它適用於3.0。