【问题标题】:Autolayout constraint for iPhone 8 and 8+ using storyboard使用情节提要的 iPhone 8 和 8+ 的自动布局约束
【发布时间】:2019-05-02 20:41:45
【问题描述】:

如何为 iPhone 8 和 8+ 定义单独的约束?

由于两者的宽度不同。是否可以通过情节提要来区分它。

基本上我想为两部手机设置不同的 x 和 y 边距。

【问题讨论】:

    标签: xcode autolayout storyboard


    【解决方案1】:

    不,您不能在 storyboard 中分离 iPhone 8 和 8+ 的布局。因为自动布局是基于尺寸等级的,并且没有可用的尺寸等级来分开 iPhone 8 和 8+。

    更多信息:https://medium.com/@craiggrummitt/size-classes-in-interface-builder-in-xcode-8-74f20a541195.

    【讨论】:

      【解决方案2】:

      自定义约束类 IBDesignable & IBInspectable

      import UIKit
      
      @IBDesignable
      class MyConstraint: NSLayoutConstraint {
      
        @IBInspectable
        var iPhone8: CGFloat = 0 {
          didSet {
            if UIScreen.main.bounds.maxY == 667 &&
               UIScreen.main.bounds.maxX == 375 {
              constant = iPhone8
            }
          }
        }
      
        @IBInspectable
        var iPhone8Plus: CGFloat = 0 {
          didSet {
            if UIScreen.main.bounds.maxX == 414 &&
               UIScreen.main.bounds.maxY == 736 {
              constant = iPhone8Plus
            }
          }
        }
      }
      

      设置约束自定义类

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-05-29
        • 2015-06-17
        • 1970-01-01
        • 2017-09-17
        • 1970-01-01
        • 1970-01-01
        • 2014-12-04
        • 2014-10-12
        相关资源
        最近更新 更多