Storyboard中UIButton的Autoshrink设置

43

在Storyboard中,UILabel有一个设置可以设置自动收缩配置,如下所示:

enter image description here

但是我无法找到同样适用于UIButton的textLabel的设置。 我知道我可以通过编程来设置,但我想知道是否有一种方法可以在Storyboard中启用此设置。

5个回答

72
你可以使用用户自定义运行时属性在Storyboard中设置此标志。
设置以下键路径:
titleLabel.adjustsFontSizeToFitWidth to true

使用Storyboard调整字体大小


21

不可以,在Storyboard中没有可用的选项来设置按钮的文本标签自动收缩。

但是你可以通过编程方式使用adjustsFontSizeToFitWidth来设置它,因为你已经了解了它。

yourbutton.titleLabel?.adjustsFontSizeToFitWidth = true;

你可以通过IBDesignable和IBInspectable进行设置。 - techloverr
@techloverr 他只是想知道从Storyboard中是否可能实现。他希望有像UILabel中的Autoshrink一样的直接选项。 - Badal Shah
是的,但我们可以通过只用几行代码来展示另一种方法,而不是用粗体告诉他不行。 - techloverr
@techloverr 他已经提到他知道另一种编程方法。 - Badal Shah
@techloverr,这不仅需要通过Storyboard,你还需要编程设置一些属性。 - Badal Shah
显示剩余3条评论

9

试一下这个

btn.titleLabel.adjustsFontSizeToFitWidth = YES;
btn.titleLabel.minimumScaleFactor = 0.5; // set whatever factor you want to set 

如果您想在故事板中进行设置,请尝试使用IBDesignable和IBInspectable。详情请参见http://nshipster.com/ibinspectable-ibdesignable/

那么,你是给我的回答点踩的人吗?好的,兄弟,欢迎你。问题是这样的,没有任何代码需要更改,这在UIButton中是否可能? - Anbu.Karthik
没关系兄弟,它已经被弃用了,所以我给它点了个踩。 - techloverr
IBDesignable或IBInspectable,我们可以分配自定义属性,在这里我们可以添加任何需要的属性。 - Anbu.Karthik
请恕我直言,如果我们可以在自定义属性的setter中设置此属性。 - techloverr

4

Swift 4解决方案

class CustomButton : UIButton{
    @IBInspectable var adjustsTitleFontSizeToFitWidth: Bool = false {
        didSet {
            self.titleLabel?.adjustsFontSizeToFitWidth = adjustsTitleFontSizeToFitWidth
        }
    }
}

0
extension UIButton {
    @IBInspectable var adjustsTitleFontSizeToFitWidth: Bool = false {
        didSet {
            self.titleLabel?.adjustsFontSizeToFitWidth = adjustsTitleFontSizeToFitWidth
        }
    }
}

欢迎来到Stack Overflow!虽然这段代码可能解决了问题,但是包括解释它如何以及为什么解决了问题,将有助于提高您的帖子质量。请记住,您正在回答未来读者的问题,而不仅仅是现在提问的人。请[编辑]您的答案以添加解释,并指出适用的限制和假设。 - user17242583

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接