ios - 自动布局、尺寸类别和字体大小

标签 ios swift autolayout nslayoutconstraint

我目前正在使用以下软件:Swift (1.2)、Xcode (6.3) 和 iOS 8.3。

我目前有一个应用程序看起来类似于我为这个问题制作的这个示例:

Storyboard

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

如您所见,我尝试使用“文本显示控件”来添加一个大字体 (44) 和另一个较小字体 (33)。对于第二个,设置为“宽度:紧凑;高度:任意”。

以下是我目前的结果:

Screens

不过,如你所见,iPhone 6 Plus 上的字体还是那个小。我试图更改“宽度:紧凑;高度:常规”和系统字体的设置(小字体);但结果是一样的:(

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

Screens OK

有没有办法:

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

最佳答案

我刚刚用我自己的一个应用经历了这样的事情,并确定了这个解决方案:

// 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)
    }
}

关于ios - 自动布局、尺寸类别和字体大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30490606/

相关文章:

ios - 如何在共享时使 URL 字符串可链接

ios - 从图像选择器将图像上传到单元格

ios - connectionDidFinishLoading 完成后无法重新加载 UITableView

generics - 符合 Swift 协议(protocol)的泛型类型

ios - Xcode 8 添加布局边距崩溃

ios - MonoTouch.Dialog 事件和部分

arrays - 更改数组中的元素时更改 swift UILabel

ios - scrollView 不快速滚动

ios - AutoLayout 内容不适合 UITableView 单元格

ios - 为什么我的 UICollectionViewCells 在动画 super View 约束更改时会更改 alpha 值?