【问题标题】:adjust font size to width on dynamically resizing button, button doesn't have a width static constraint在动态调整按钮大小时将字体大小调整为宽度,按钮没有宽度静态约束
【发布时间】:2017-07-22 06:54:45
【问题描述】:

我有三个按钮,在 iPad 自适应模式下,它们最终靠得很近,但在 iPad 或 iPhone 横向模式下却相距甚远。我使用静态尾随/前导/底部空间约束正确缩放按钮,并且它们的高度设置为与视图高度成比例。按钮可以很好地调整大小,但我必须以编程方式为 viewdidload 中的不同屏幕大小设置所有按钮标签字体大小。我希望我可以在课堂上添加可调整大小的标题标签功能,但我似乎无法将其锁定。

任何帮助将不胜感激。

我的自定义按钮类:

    import UIKit

class BetterButton: UIButton {

required public init?(coder aDecoder: NSCoder) {

    super.init(coder: aDecoder)

    self.titleLabel!.font = UIFont(name: "Marker Comp", size: 200)
    self.titleLabel?.minimumScaleFactor = 0.5
    self.titleLabel?.numberOfLines = 0
    self.titleLabel?.adjustsFontSizeToFitWidth = true

    self.layer.cornerRadius = 4
    self.layer.shadowOpacity = 1
    self.layer.shadowOffset = CGSize(width: 0.0, height: 2.0)
    self.layer.shadowRadius = 0
    self.layer.shadowColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.25).cgColor

}

}

所有按钮文本在运行时为 200,但宽度调整未激活。

【问题讨论】:

    标签: ios swift swift3


    【解决方案1】:

    尝试添加这个:

    self.titleLabel?.lineBreakMode = NSLineBreakMode.ByClipping
    

    此外,200 的字体大小和 0.5 的 minimumScaleFactor 导致最小的字体大小为 100,这仍然相当大。

    将 minimumScaleFactor 更改为 0.1 或 0.05,或将最大/正常字体大小更改为 30 之类的就可以了。

    【讨论】:

    • 这使按钮上的文本方向在按钮内从左到右保持不变,但字体仍然很大,并且由于字体很大,所以刚好超过了按钮边界。 (在添加此行之前,文本会很大,并且会从按钮的各个侧面爆炸)但这不允许标题文本调整大小或缩小以适应。
    • 嗯...如果您尝试minimumScaleFactor = 0.05 会发生什么?因为 0.5*200 仍然是一个相当大的字体......
    • 哦!我认为这是最小比例,因为它会缩小到最小字体大小,我没有注意到它是字体大小的一个因素。我将字体大小更改为 30,0.5 的比例因子似乎可以解决问题。感谢您的帮助!
    • 酷 - 我在答案中添加了注释。如果您“接受”它,那可以帮助可能遇到此问题的其他人。很高兴你解决了:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-03
    • 2012-01-30
    • 1970-01-01
    • 2011-12-25
    • 1970-01-01
    • 2019-01-24
    相关资源
    最近更新 更多