NSLabel具有顶级约束的自动收缩功能

时间:2016-10-17 07:00:51

标签: ios uilabel ios-autolayout autosize

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

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

UILabels的约束:

  • 将中心X与Superview对齐
  • 将中心Y与Superview对齐
  • Superview的尾随空格> = 50
  • Superview的顶级空间> = 40
  • 将中心X与label2对齐
  • 标签1的顶部空格等于:15
  • 标签2的底部空格等于:3

标签1约束:

  • 将中心x与超级视图对齐
  • 追踪空间到superview> = 10
  • 领先空间到superview> = 10
  • 收缩标签的底部空间等于15

标签2约束:

  • 将中心X对齐收缩标签
  • Top Space to Shrink标签等于3

如何更改?

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

Normal size

Width change

Height change

2 个答案:

答案 0 :(得分:2)

选择收缩标签集

行数为0

换行符:剪辑

自动收缩:最小字体比例0.25 enter image description here

答案 1 :(得分:1)

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

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的扩展中,通过将故事板中设置的当前设备视为iPhone 6大小来计算propotional值。

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