根据设备大小缩放多行UIButton上的字体

时间:2017-01-16 12:57:13

标签: ios swift ipad uikit interface-builder

当前设置:

我有一个多行 UIButton,它被添加到其超级视图(普通的UIView)。按钮的宽度是其超视图的90%。因此,当超视图的大小发生变化时,由于Autolayout约束,标签的宽度会相应更改。

接下来,在viewDidLoad方法中我做了这个:

  //Line break mode and Font size ( are set in Interface Builder
  myButton.titleLabel?.adjustsFontSizeToFitWidth = true
  myButton.titleLabel?.minimumScaleFactor = 15.0
  myButton.titleLabel?.numberOfLines = 2

所以现在,当我有很长的文字时,在iPhone设备上我会得到这样的内容:iPhone look

这正是我想要的。但当然,这在iPad设备上看起来有所不同。例如,这是在iPad Pro 9.7上:

iPad Pro look

正如可以看到的,一切看起来都很小而且很糟糕。

我尝试过:

我尝试设置最大字体大小(将在iPad设备上使用),并与minimumScaleFactore = 15结合使用。因此我将字体大小设置为25,现在iPad和iPhone上的所有内容都更容易接受,但在iPhone设备上,由于minimumScaleFactor的工作原理,文本比我需要的要大一些。

解决这个问题的方法是什么?

我更喜欢这样的东西(在所有iPad和iPhone设备上看到类似的外观):

desired iPad look

2 个答案:

答案 0 :(得分:3)

您可以使用尺寸类来指定IB中按钮/标签上的字体。只需按下font属性左侧的小+号:

Just press the little + sign to the left of the font property

答案 1 :(得分:1)

遗憾的是,您无法根据大小等级改变界面构建器中按钮的字体;但是您可以根据大小类删除整个控件。选择按钮选择属性检查器(Option + command + 4)。一直滚动到底部,您会看到一个安装的复选框,左侧有一个小加号按钮。如果单击加号,您现在可以添加大小类的变体来卸载此控件。具体来说,将其卸载为Regular Width Regular Height(非分割屏幕中的iPad)。现在使用您的iPad属性制作第二个按钮,并仅将其安装为常规宽度常规高度。你现在有两个不同的按钮:1)iPad没有分屏,一个用于其他所有按钮,不需要代码。您可以将它们设置为调用相同的IBAction。请参阅此link for more