こんにちは、JAGA(ja_gaimopotato)です。
基本的には画面を回転したくないけれど、一部のViewのみ回転させたいという場合にはshouldAutorotate
メソッドをオーバーライドして、NOを返しつつ、一部のUIViewのみ回転させるという方法で解決できます。
例えばカメラアプリなどで、ボタンなどを部分的に回転させたい場合、このメソッド内で回転のアニメーション処理を行います。
やってみた
コードはこんな感じです。
- (BOOL)shouldAutorotate{
switch ([[UIDevice currentDevice]orientation]) {
case UIDeviceOrientationPortrait:
// ホームボタンが下
break;
case UIDeviceOrientationLandscapeLeft:
// ホームボタンが左の場合は回転
CGAffineTransform rotate = CGAffineTransformMakeRotation(M_PI/2);
view.transform = rotate;
break;
default:
break;
}
return NO;
}
とこんな感じで一部のUIViewだけ制御できます。
カメラアプリを作るときに使ってみましたが、問題なく動作しました。
iOSのアプリを開発していて、画面の回転への対応はよくあるトピックスの一つです。
回転を考慮しながら、作るのですが結構苦労することも多くもっと精進したいと思っています。