如何根据设备的方向添加或删除子视图?

时间:2015-10-08 15:56:54

标签: ios swift subview

所以我有一个按钮,当点击它时会调用一个向视图添加一些自定义子视图的功能。所以我想要的是当设备处于纵向模式时显示4个子视图,当你将它旋转到横向时只显示一个。我想做这样的事情:

func showSubviews {
  if deviceOreintation == portrait{
  //show 4 subviews 
  }
  else{
  //show 1 subview and hide rest of the three
  }    
 }

我试过这样的事情:

 func showSubviews(){  
 if self.traitCollection.verticalSizeClass == UIUserInterfaceSizeClass.Regular {
 //show 4 subviews 
}
else{
 //show 1 subview and hide the rest three
}
}

感谢任何帮助,谢谢!

2 个答案:

答案 0 :(得分:0)

您的代码看起来是正确的。您只需要在视图控制器中覆盖viewWillTransitionToSize(_:withTransitionCoordinator:)方法并在那里进行一些检查。

答案 1 :(得分:0)

  • 在故事板中,我添加了3个名为:红色,绿色,蓝色和autolayout的视图:

    • all:固定宽度,高度,中心X
    • red:top
    • 绿色:中心Y
    • blue:bottom

    enter image description here

  • 在viewDidLoad

    中添加此行
    NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("didChangeOrientation"), name: UIApplicationDidChangeStatusBarOrientationNotification, object: nil)
    
  • 添加新功能:

      func didChangeOrientation() {
    
         let orientation = UIApplication.sharedApplication().statusBarOrientation
    
         if UIInterfaceOrientationIsLandscape(orientation) {
    
             green.hidden = true
             print("landscape")
         }
         else {
             green.hidden = false
             print("portrait")
         }
     }
    

希望这可以提供帮助。