具有顶部约束的 NSLabel Autoshrink
NSLabel Autoshrink with top constraints
我试图找出 UILabel 中关于顶部约束的自动收缩选项。
我有 UIView 和三个标签。其中之一启用了自动收缩选项。它具有居中约束,并且具有在更改 UIView 大小时应收缩标签的 Trailing 和 Top 约束。如果我使 UIVIew 变薄,字体大小会减小,但如果我改变 UIView 字体的高度,则不会改变。
UILabel 的约束:
- 将 X 中心与 SuperView 对齐
- 将 Y 中心与超级视图对齐
- 尾随 Space 到 Superview >= 50
- 顶部 Space 至 Superview >= 40
- 将 X 中心与标签 2 对齐
- top Space 到 label1 等于 :15
- 底部 space 到 label2 等于 :3
标签 1 约束:
- 将 X 中心与父视图对齐
- 尾随 Space 到超级视图 >=10
- 导致Space到超级视图>=10
- 底部 Space 收缩标签等于 15
标签 2 约束:
- 将中心 X 与收缩标签对齐
- 顶部 Space 收缩标签等于 3
如何更改?
我想要的是,在最后一张图片上,标签会很好地自动收缩。所以如果我改变 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 属性。请参考图片。
我试图找出 UILabel 中关于顶部约束的自动收缩选项。
我有 UIView 和三个标签。其中之一启用了自动收缩选项。它具有居中约束,并且具有在更改 UIView 大小时应收缩标签的 Trailing 和 Top 约束。如果我使 UIVIew 变薄,字体大小会减小,但如果我改变 UIView 字体的高度,则不会改变。
UILabel 的约束:
- 将 X 中心与 SuperView 对齐
- 将 Y 中心与超级视图对齐
- 尾随 Space 到 Superview >= 50
- 顶部 Space 至 Superview >= 40
- 将 X 中心与标签 2 对齐
- top Space 到 label1 等于 :15
- 底部 space 到 label2 等于 :3
标签 1 约束:
- 将 X 中心与父视图对齐
- 尾随 Space 到超级视图 >=10
- 导致Space到超级视图>=10
- 底部 Space 收缩标签等于 15
标签 2 约束:
- 将中心 X 与收缩标签对齐
- 顶部 Space 收缩标签等于 3
如何更改?
我想要的是,在最后一张图片上,标签会很好地自动收缩。所以如果我改变 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 属性。请参考图片。