2010-01-24 57 views
2

我想在風景模式下工作,只有到目前爲止我可以在應用程序的其餘合適的座標框架的唯一方法是通過使用旋轉主窗口:快速UILabel旋轉可能嗎?

CGAffineTransformMakeRotation(3.1415/2.0F);

它也旋轉所有子視圖。

它工作的很好,除了當我想繪製UILabel時,幀頻下降像瘋了似的。我需要截斷以及UILabel提供的所有漂亮的東西,所以我的問題是,是否有更好的方式進入橫向模式或加速文本繪圖。我見過一些應用程序在橫向模式下工作,仍然有文本,所以我想知道...

回答

4

也許使用CGAffineTransformMakeRotation(M_PI/2.0f);而不是?這應該產生一個真正簡單的仿射變換矩陣。

+0

哇哦,這是它,謝謝。 :) 但我不明白爲什麼。它是否仍然將矩陣中其餘的元素放大? – 2010-01-24 08:57:52

+2

對於'M_PI/2.0f',你的矩陣就像'[0,1; -1,0]',而用'3.1415/2.0f'(一個不準確的值),你會得到'[4.6e-5,0.99 ...; -0.99 ...,4.6e-5]'這會導致事情非常緩慢。 – kennytm 2010-01-24 10:03:10

2

如果您想要做的只是在橫向模式下工作,則從iPhone OS 2.1開始,您不需要將轉換應用到主視圖。有關更多詳細信息,請參閱this answerthis question

0

很簡單:

myLabel.text = @"Text To Rotate"; 
    //myLabel is UILabel, which i want to Rotate. 
    myLabel.textColor = self.xValuesColor; 
    myLabel.backgroundColor = [UIColor redColor]; 
    myLabel.textAlignment = UITextAlignmentCenter; 
    CATransform3D landscapeTransform = CATransform3DIdentity; 
    landscapeTransform = CATransform3DRotate(landscapeTransform,-90, 0, 0, 1); 
    // -90 is angle to rotate, you can change it according to your requirement. 
    myLabel.layer.transform = landscapeTransform; 
    [self addSubview:myLabel]; 
    [myLabel release];