具有顶部约束的 UILabel 自动收缩

问题描述 投票:0回答:2

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

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

UILabel 的限制:

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

标签 1 约束:

  • 将中心 x 与超级视图对齐
  • 超级视图的尾随空格 >=10
  • 领先空间监督>=10
  • 收缩标签的底部空间等于 15

标签 2 约束:

  • 将中心 X 与收缩标签对齐
  • 收缩标签的顶部空间等于 3

如何改变这个?

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

ios autolayout uilabel autosize
2个回答
2
投票

请选择您的收缩标签集

行数为0

换行:剪辑

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


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 扩展中,将 Storyboard 中设置的当前设备视为 iPhone 6 尺寸来计算比例值。


从标签的界面构建器添加此代码集

on
后,您可以在属性检查器选项卡中看到 isPropotional 属性。请参考图片。

© www.soinside.com 2019 - 2024. All rights reserved.