2016-04-13 11 views
5

スプリットビューコントローラが1つあり、その中にポップオーバーが表示されています。今度は、デバイスの向きが風景から肖像画に変わっているときに、私はコードの一部を実行する必要があります&それは、縦から横に変化している場合、別のコードを実行する必要があります。スウィフトでこれを達成する方法。スウィフト4に更新デバイスオリエンテーションの変更方法を確認する方法iPadからPortraitへ横向きと横向きに変更

答えて

-1

のように一つの関数を作成します8.0以下の方法で向きの変化を検知することができます。迅速

func viewWillTransitionToSize(_ size: CGSize, 
    withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) 

Objective-Cで

- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator 

あなたは見つけることができますサイズから。

+0

このメソッドは呼び出されていません。私は分割ビューコントローラを持っています – Swayambhu

+0

** UISplitViewContoller **は** UIVIewController **のサブクラスです。**これは呼び出す必要があります。もう1つの重要な点は、このメソッドをsuperまたはnotで呼び出すことです。** viewWillTransitionToSize:withTransitionCoordinator:**は、インターフェイスが実際にサイズを変更しようとしている場合、つまり90度回転した場合にのみ機能します。レイアウト上にランドスケープのみを許可するマスクがある場合、180度回転するとインターフェイスのサイズは変わらないため、このメソッドは呼び出されないようです。 – commando24

16

: はViewDidLoadにコードの下に追加します。

その後
NotificationCenter.default.addObserver(self, selector: #selector(orientationChanged), name: Notification.Name("UIDeviceOrientationDidChangeNotification"), object: nil) 

、iOS版から

@objc func orientationChanged() { 

    if(UIDeviceOrientationIsLandscape(UIDevice.current.orientation)){ 

     print("landscape") 
    } 

    if(UIDeviceOrientationIsPortrait(UIDevice.current.orientation)){ 

     print("Portrait") 
    } 

} 

下記の希望、この意志はあなたを助け:)

+0

UIDeviceOrientation!= UIInterfaceOrientation – nnrales

関連する問題