使iOS视图/约束适用于所有iPhone

使iOS视图/约束适用于所有iPhone,ios,swift,interface-builder,Ios,Swift,Interface Builder,我使用Xcode8创建iOS视图,我在InterfaceBuilder中配置它们,而且大多数时间也是通过编程方式配置的 我正在处理的视图是针对每个版本的iPhone的,以及仅针对iPhone的。iPhone4和iPhone6sPlus的屏幕尺寸相差太大,这使得工作更加困难 我知道AutoLayout提供了一个很棒的工具来管理最小字体(缩放|大小),但这还不足以解决我的问题。我想缩放一些文本大小,并根据屏幕大小缩放一些约束 也许在我的过程中我错了,但这就是我目前所做的 我在每个视图控制器中都有以下

我使用Xcode8创建iOS视图,我在InterfaceBuilder中配置它们,而且大多数时间也是通过编程方式配置的

我正在处理的视图是针对每个版本的iPhone的,以及仅针对iPhone的。iPhone4和iPhone6sPlus的屏幕尺寸相差太大,这使得工作更加困难

我知道AutoLayout提供了一个很棒的工具来管理最小字体(缩放|大小),但这还不足以解决我的问题。我想缩放一些文本大小,并根据屏幕大小缩放一些约束

也许在我的过程中我错了,但这就是我目前所做的

  • 我在每个视图控制器中都有以下代码:
  • 我通过以下方式设置每个视图的字体大小:
  • 我单独设置了一些约束的常数,如下所示:
  • 我还有其他一些限制,比如AutoLayout中屏幕高度的2/100。因此,根据定义,它们与屏幕大小相适应

  • 这是可行的,但对我来说似乎不是最佳的。我想让它更易于维护。我不认为在InterfaceBuilder中设置一些约束以及以编程方式设置一些其他约束是很容易维护的尝试在同一元素上设置多个类型的相同约束,但更改每个约束的优先级

    例如:屏幕中央的
    ui按钮

    我给了它3种不同的高度限制:

    • 高度
      =30
      @1000优先级
    • 高度
      =32
      @999优先级
    • 高度
      =35
      @998优先级
    此配置将确保按钮的高度始终至少为30点,但如果屏幕上有足够的空间,它将尝试扩展到32或35点

    当然,具体的设置取决于您的情况,但是如果您也想更改字体大小,那么尝试使用
    UIEdgeInsets
    和最小字体大小的组合来控制实际绘制文本的区域

    enum ButtonType {
        case Title
        case Subtitle
        case Hint
        case Feedback
        case Button
    }
    
    func textSize(button: ButtonType) -> CGFloat {
        switch (AppStyleKit.Size.screenSize()) {
    
        case .Small:
            switch (button) {
            case .Title:
                return 16
            case .Subtitle, .Feedback:
                return 13
            case .Hint:
                return 11
            case .Button:
                return 13
            }
        case .Medium:
            switch (button) {
            case .Title:
                return 17
            case .Subtitle, .Feedback:
                return 14
            case .Hint:
                return 13
            case .Button:
                return 14
            }
        case .Big:
            switch (button) {
            case .Title:
                return 18
            case .Subtitle, .Feedback:
                return 15
            case .Hint:
                return 14
            case .Button:
                return 15
            }
        }
    }
    
    hintLabel.font = UIFont(name: "FontName", size: textSize(.Hint))
    
    heighBetweenLabel1And2.constant = Device.IS_4_INCHES_OR_SMALLER() ? 8 : 15