0

私は以前この質問をしていましたが、注意を払っていて、助けてくれた人が何週間も応答していないので、私を許してください。オリエンテーションに基づくCGAffineTransformMakeRotationを使用したUILabel? (ARC、ストーリーボード、LLDB)

私はUILabelを180度反転させるためにCGAffineTransformMakeRotationを使っていますが、UIOrientationPortraitとUIOrientationPortraitUpsideDownに基づいて回転を行います。私は1/2の結果を得る:ユーザーはラベルが180を変換し、(まだ[重要]ホームボタンを向いている)だけでなく逆さまになり逆さま(肖像画から)に反転するとき

しかし

Iが回転ラベルが反転したままの状態でホームボタンには残りません。私はここで

....助けが必要厥私が持っているコードです:

#define degreesToRadian(x) (M_PI * (x)/180.0) 

... 

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration 
{ 
    TranslateLabel.transform = CGAffineTransformMakeRotation(degreesToRadian(180)); 
} 

答えて

2

向きが何であっても、逆さまに回転しています。あなたはそれが向きに応じて異なる回転したい場合は、このような何かしなければならない:デバイスが逆さまのとき

-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration 
{ 
    switch(toInterfaceOrientation){ 
    case UIInterfaceOrientationPortrait: 
     TranslateLabel.transform = CGAffineTransformIdentity; 
     break; 
    case UIInterfaceOrientationPortraitUpsideDown: 
     TranslateLabel.transform = CGAffineTransformMakeRotation(degreesToRadian(180)); 
     break; 
    } 
} 

その方法は、それが上下逆さまにラベルを回転させますが、それはに戻ってそれを返します。デバイスが縦向きの場合は正常です。

+0

これはうまくいったが、私は大文字小文字UIInterfaceOrientationLandscapeLeftを追加しなければならなかった: break; case UIInterfaceOrientationLandscapeRight: break;列挙エラーがなくなるでしょう。 –

+1

デフォルトを追加することもできます。これは上記のいずれも起こらない場合に実行されるため、すべての単一のケースを追加する必要はありません。 – EmilioPelaez

+0

大きなポイント、フォローアップのおかげで! –

0

私は向きがUIInterfaceOrientationPortraitUpsideDownある場合は、上記の持っているように変換設定を、あなたはtoInterfaceOrientationに切り替えたいと思いますCGAffineTransformIdentityの場合はUIInterfaceOrientationPortraitです。 (これは、他の向きへの回転を許可しないことを前提としています)。

関連する問題