具有顶部约束的 NSLabel Autoshrink

NSLabel Autoshrink with top constraints

我试图找出 UILabel 中关于顶部约束的自动收缩选项。

我有 UIView 和三个标签。其中之一启用了自动收缩选项。它具有居中约束,并且具有在更改 UIView 大小时应收缩标签的 Trailing 和 Top 约束。如果我使 UIVIew 变薄,字体大小会减小,但如果我改变 UIView 字体的高度,则不会改变。

UILabel 的约束:

标签 1 约束:

标签 2 约束:

如何更改?

我想要的是,在最后一张图片上,标签会很好地自动收缩。所以如果我改变 UIView 标签的宽度或高度应该缩小。

plz select 你的收缩标签集

行数为0

换行符:剪辑

自动收缩:最小字体比例 0.25

我希望下面的代码能以某种方式帮助你,

extension Double {
    /// Returns propotional width according to device width
    var propotional: CGFloat {
        if UIDevice.current.userInterfaceIdiom == .pad {
            return CGFloat(414.0) / CGFloat(375.0) * CGFloat(self)
        }
        return CGFloat(Screen.width) / CGFloat(375.0) * CGFloat(self)
    }
}



extension UILabel {
        /// This property is change font-size of Label's text propotionaly, if assigned `On` from Interface builder
       @IBInspectable
        var isPropotional: Bool{
            get {
                return true
            }

        set {
                if newValue == true {
                    let fontSize = Double((self.font!.pointSize))
                    self.font = UIFont(name: self.font!.fontName, size: fontSize.propotional)
            }
        }
    }
}

在 Double 的扩展中,通过将 Storyboard 中的当前设备设置为 iPhone 6 大小来计算比例值。


在 Label 的界面构建器中添加此代码集 on 后,您可以在属性检查器选项卡中看到 isPropotional 属性。请参考图片。