NSLabel Autoshrink with top constraints

偶尔善良 提交于 2019-12-11 05:33:05

问题


I try to figure out autoshrink option in UILabel with regarding top constraint.

I have UIView and three labels. One of them has autoshrink option on. It has constraint to be centered, and has Trailing and Top constraint which should shrink label when changing size of UIView. If I make UIVIew thinner, font size is decreased, but if I change height of UIView font is not changed.

Constraints on UILabels :

  • Align Center X to Superview
  • Align Center Y to Superview
  • Trailing Space to Superview >= 50
  • Top Space to Superview >= 40
  • Align Center X to label2
  • Top Space to label1 equals :15
  • Bottom space to label2 equals :3

Label 1 constraints :

  • Align Center x to superview
  • Trailing Space to superview >=10
  • Leading Space to superview >=10
  • Bottom Space to Shrink Label equal 15

Label 2 constraint :

  • Align Center X to Shrink label
  • Top Space to Shrink label equals 3

How to change this?

What I want is, on last image that label will be nice autoshrink. So if I change width or height of the UIView label should shrink.


回答1:


plz select your Shrink label set

Number of lines is 0

Line Breaks: Clip

Autoshrink: Minimum Font Scale 0.25




回答2:


I hope below code will help you in some way,

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)
            }
        }
    }
}

In extension of Double, propotional value is calculated by considering current device set in storyboard as iPhone 6 size.


After adding this code set on from interface builder for Label where you can see isPropotional attribute in attribute inspector tab. Please refer image.



来源:https://stackoverflow.com/questions/40080247/nslabel-autoshrink-with-top-constraints

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!