【Swift4】一部の画面(ViewController)だけ画面を回転させる方法【Objective-C】

一部の画面(ViewController)のみ横向きなどの回転を実装する方法です。

1.事前準備

TARGET > General > Deployment Info > Device Orientation
全ての方向の回転を許可しておきます。

 

2.ViewController内でshouldAutorotateを実装する

ViewControllerに- (BOOL)shouldAutorotateメソッドを実装し、YES・NOで回転の許可、不許可をView

2-1. 回転したいViewControllerはYES

Swift4

Objective-C

回転したことを受け取るメソッドも実装

2-2. 回転したくないViewControllerはNO

Swift4

Objective-C

 

3. NavigationController内のViewControllerの場合

ナビゲーションコントローラー内にあるViewControllerの場合、ナビゲーションコントローラー自体を回転させる必要があるため、ViewControllerで個別にshouldAutorotateを実装しても、回転することはありません。

そこで、ViewControllerで個別に実装したshouldAutorotateの結果をナビゲーションコントローラーに適応させる実装が必要になります。

Swift4

Extension.swiftを作成します。

Objective-C

UINavigationController+Helper.hを作成します。

UINavigationController+Helper.mを作成します。

あとはナビゲーションコントローラー内に入るViewControllerで作成したhファイルをインポートします。

これで、ナビゲーションコントローラーに現在表示しているViewControllerのshouldAutorotateの設定を適応することができます。