Autolayout,尺寸等级和字体大小

时间:2015-05-27 18:41:09

标签: ios swift autolayout nslayoutconstraint

我目前正在使用以下内容:Swift(1.2),Xcode(6.3)和iOS 8.3。

我目前的应用程序与我为此问题所做的示例类似:

Storyboard

对于每个UIButton / UILabel,我想根据使用的设备配置字体大小(例如iPhone 4s到iPhone 6 Plus)。

正如您所看到的,我尝试使用“文本显示控件”来添加较大的字体大小(44)和另一个较小的字体(33)。对于第二个,设置为“Width:Compact; Height:Any”。

以下是我目前的结果:

Screens

然而,正如您所看到的,iPhone 6 Plus上的字体仍然是小字体。我尝试更改“Width:Compact; Height:Regular”和System字体的设置(小字体);但结果是一样的:(

我怎么能有这样的东西(iPhone 6 Plus有大字号)?

Screens OK

有办法:

  • 直接在故事板中使用AutoLayout定位特定设备?
  • 使用一些技巧使它看起来很棒(可能有约束和最小字体比例)?
  • 在故事板外(通过代码)进行?唯一的解决方案是检查UIScreen.mainScreen().bounds.size.width
  • 的值

1 个答案:

答案 0 :(得分:2)

我刚用自己的一个应用程序进行了类似的操作,并确定了这个解决方案:

// global utility...
var on6plus : Bool {
    return UIScreen.mainScreen().traitCollection.displayScale > 2.5
}

// and then, in my view controller's viewDidLoad...
if on6plus {
    for lab in [self.scoreLabel, self.prevLabel, self.stageLabel] {
        let f = lab.font
        lab.font = f.fontWithSize(f.pointSize + 2)
    }
}