2017-04-25 9 views
0

私は、デバイスが逆さまになっているときにのみ、ラベル「dave」が隠されないというコードを書こうとしています。現在、ラベル「dave」は4方向すべてに表示されています。これは私のコードです。オリエンテーションが変更されたときにエフェクトが適用されない(swift3)

import UIKit 

class ViewController: UIViewController { 

@IBOutlet var dave: UILabel! 
override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
    s() 

} 


func s() { 
    if UIDevice.current.orientation == UIDeviceOrientation.landscapeLeft { 
     dave.isHidden = true 




    } else if UIDevice.current.orientation == UIDeviceOrientation.landscapeRight { 
     dave.isHidden = true 


    } else if UIDevice.current.orientation == UIDeviceOrientation.portrait { 
     dave.isHidden = true 


    } else if UIDevice.current.orientation == UIDeviceOrientation.portraitUpsideDown { 
     dave.isHidden = false 
    }}} 
+0

あなたは* viewDidLoad *が一度**発生したことを知っていますか?そこにあなたの "s"関数を呼び出さないでください - 方向が変わったときにそれを呼び出してください。 (そして、はい、* viewWillAppear *の初期オリエンテーションをチェックしたいと思います。) – dfd

答えて

1

デバイスの向きが変更されると、viewWillTransitionこのデリゲートが起動します。したがって、viewDidLoadではなく、このメソッド内でS()関数を呼び出してください。

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { 
     s() 
} 

希望すると、これが役立ちます。

関連する問題