2017-01-16 115 views
1

电流设置一个multilined的UIButton字体:缩放上取决于设备尺寸

我有一个multilinedUIButton被添加到它的父(普通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

+0

所以基本上,我在寻找一种方法来设置这一切都以某种方式,最好是通过IB,或者如果没有可能,通过代码,但我试图避免以编程方式基于检测到的设备设置字体。我的意思没有什么不好,但我想知道是否有更优雅的东西。 – Whirlwind

回答

1

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

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

+0

这看起来很有前途......我怎么没有注意到这个:) – Whirlwind

+0

这工作完美。我会尽快奖励这个答案(由于系统的工作原理,我必须等待4个多小时左右) – Whirlwind

1

可悲的是,你不能改变基础上,大小在Interface Builder中按钮的字体类;但是,您可以根据尺寸等级移除整个控件。选择您的按钮选择属性检查器(Option + command + 4)。一直滚动到底部,你会看到一个复选框,在左边安装一个小加号按钮。如果单击加号,现在可以添加大小类的变体以卸载此控件。特别将其卸载为Regular Width Regular(非iPad分屏下的iPad)。现在制作第二个带有iPad属性的按钮,并仅将其安装为常规宽度常规高度。你现在有两个不同的按钮:1)iPad没有分屏,一个用于其他任何地方,不需要代码。您可以将它们设置为调用相同的IBAction。看到这个link for more

+1

'可悲的是,你不能改变基于尺寸类的界面生成器中的按钮的字体:这是不正确的。看到我的答案。 –

+0

Josh,你提出的建议也适用,所以你有我的赞同,但Mihai的答案是在这种情况下更优雅的解决方案。尽管如此,你的第一句话似乎是误导性的,所以你可能想编辑你的答案对未来的读者更有用。 – Whirlwind