故事板和Swift中的不同肖像/风景视图

前端之家收集整理的这篇文章主要介绍了故事板和Swift中的不同肖像/风景视图前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用storyboard和 Xcode 6来设计应用程序视图但我面临这个问题:我想为纵向和横向模式分配不同的子视图位置.例如:

从现在开始,我已经通过willRotateToInterfaceOrientation和状态栏以编程方式实现了这一目标,以获得ipad方向.

使用Xcode 6,用于纵向和横向的iPhone布局是不同的,但对于iPad(常规,常规)是相同的.有可能通过限制来实现这些位置吗?

是的,你可以通过约束来做到这一点.

首先,您需要为superview创建约束,而不是最近的视图.相邻视图将改变位置,因此我们不希望约束相对于其他视图.有关如何设置约束的示例,请参阅下面的屏幕截图.

接下来,将您要修改的约束链接到IBOutlets,以便我们可以以编程方式修改它们.对于您的示例,这些将​​是约束:

  1. @IBOutlet var greenViewTrailingConstraint: NSLayoutConstraint!
  2. @IBOutlet var greenViewBottomConstraint: NSLayoutConstraint!
  3.  
  4. @IBOutlet var redViewTopConstraint: NSLayoutConstraint!
  5. @IBOutlet var redViewLeadingConstraint: NSLayoutConstraint!
  6. @IBOutlet var redViewBottomConstraint: NSLayoutConstraint!
  7.  
  8. @IBOutlet var blueViewTrailingConstraint: NSLayoutConstraint!
  9. @IBOutlet var blueViewTopConstraint: NSLayoutConstraint!
  10. @IBOutlet var blueViewLeadingConstraint: NSLayoutConstraint!

最后,根据UIInterfaceOrientation更新约束常量.再次,使用您的示例,代码看起来像这样:

  1. override func willRotateToInterfaceOrientation(toInterfaceOrientation: UIInterfaceOrientation,duration: NSTimeInterval) {
  2. let padding: CGFloat = 16.0
  3.  
  4. // since we're calling this before the rotation,the height and width are swapped
  5. let viewHeight = self.view.frame.size.width
  6. let viewWidth = self.view.frame.size.height
  7.  
  8. // if landscape
  9. if UIInterfaceOrientationIsLandscape(toInterfaceOrientation) {
  10. greenViewTrailingConstraint.constant = (viewWidth/2.0) + (padding/2.0)
  11. greenViewBottomConstraint.constant = padding
  12.  
  13. blueViewTopConstraint.constant = (viewHeight/2.0) + (padding/2.0)
  14. blueViewTrailingConstraint.constant = padding
  15. blueViewLeadingConstraint.constant = (viewWidth/2.0) + (padding/2.0)
  16.  
  17. redViewTopConstraint.constant = padding
  18. redViewBottomConstraint.constant = (viewHeight/2.0) + (padding/2.0)
  19. redViewLeadingConstraint.constant = (viewWidth/2.0) + (padding/2.0)
  20. } else { // else portrait
  21. greenViewBottomConstraint.constant = (viewHeight/2.0) + (padding/2.0)
  22. greenViewTrailingConstraint.constant = padding
  23.  
  24. blueViewTopConstraint.constant = (viewHeight/2.0) + (padding/2.0)
  25. blueViewTrailingConstraint.constant = (viewWidth/2.0) + (padding/2.0)
  26. blueViewLeadingConstraint.constant = padding
  27.  
  28. redViewLeadingConstraint.constant = (viewWidth/2.0) + (padding/2.0)
  29. redViewBottomConstraint.constant = padding
  30. redViewTopConstraint.constant = (viewHeight/2.0) + (padding/2.0)
  31. }
  32. }

猜你在找的Swift相关文章