适应所有iPhone的iOS视图/约束

时间:2016-10-14 20:52:31

标签: ios swift interface-builder

我正在使用 Xcode8 创建iOS视图,我在 InterfaceBuilder 中配置它们,并且大部分时间以编程方式配置

我正在处理的观点仅适用于每个版本的iPhone ,而iPhone 仅适用于。屏幕尺寸与iPhone 4到iPhone 6s Plus的区别太大,这使得工作变得更加困难。

我知道 AutoLayout 提供了一个很棒的工具来管理minimumFont(Scale | Size),但这还不足以解决我的问题。我想缩放 一些文本尺寸,并根据屏幕尺寸缩放部分约束

也许我的过程中出错了,但这就是我现在所做的......

  1. 我在每个View Controller中都有这个代码:
  2. 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
            }
        }
    }
    
    1. 我以这种方式设置每个View的fontSize:
    2. hintLabel.font = UIFont(name: "FontName", size: textSize(.Hint))
      
      1. 我单独设置了一些约束的常量:
      2. heighBetweenLabel1And2.constant = Device.IS_4_INCHES_OR_SMALLER() ? 8 : 15 
        
        1. 我有其他约束,如AutoLayout中屏幕高度的2/100。因此,它们根据定义适应屏幕尺寸。
        2. 这样可行,但这对我来说似乎不是最佳选择。我希望更容易维护。我不认为在InterfaceBuilder中设置一些约束和其他一些以编程方式设置的约束很容易维护

          我知道这个问题已被多人提出过。我读过它们,但我从来没有找到像我想的那样好的答案。

          从来没有足够的操作:/

          欢迎提供帮助甚至是简单的建议!

1 个答案:

答案 0 :(得分:2)

尝试在同一元素上设置相同的约束几种类型,但更改每个约束的优先级。

举个例子:屏幕中央有一个UIButton

A <code>UIViewController</code> with a <code>UIButton</code> in the center that has 3 height constraints.

我已经给出了3种不同的身高限制:

  • >= 30 @ 1000 priority
  • 的高度
  • = 32 @ 999优先级
  • 的高度
  • = 35 @ 998优先级
  • 的高度

此配置将确保按钮的高度始终至少为30磅,但如果屏幕上有足够的空间,则会尝试扩展为32或35.

现在具体设置取决于您的情况,但如果您想要更改字体大小,请尝试使用UIEdgeInsets和最小字体大小的组合进行实验,以控制其中的区域文本实际上是绘制的。