scroll-label-autolayout

需求

最开始设计图是这样的,居中显示一段文字,颜色xx,字体大小xx。

let label: UILabel = UILabel()
label.text = "bababal..."
label.font = UIFont.systemFontsize(1.0)
label.textalign = .center
label.snp.makeConstraints{ (make) in
    make.left.top.right.equal(0)
}

几行代码搞定。后来需求说文字可能有点多要换行。于是再加一行代码

label.numberoflines = 0

后来又说文字可能更多,更多的文字显示 ... 再后来又说...的文字要显示出来,超出固定高度的要滚动。

于是需求成这样了,在一定的高度范围内显示一行长度未知的文字,文字超过固定高度时滚动。

尝试

拆分下需求 文字不超过一行,居中不滚动 文字超过一行,不超过固定高度,不滚动,居中自动换行 * 文字超过一行, 超过固定高度,滚动,居中自动换行

能滚动的UILabel, 一开始想到的是UITextView, 试了下发现不超过一行的时候也会滚动,而且不能居中。 需要添加各种判断和限制才能达到想要的效果。 于是便考虑用UIScorllView + UILabel来实现。

解决方案

└── View
    └── scrollView
        └── contentView
            └── label
  1. scrollView 设置上下左右约束
  2. contentView 上下左右约束为0, 水平垂直居中,bottom和CenterY约束Priority调到最低250
  3. label 上左右约束为0,Lines设置为0
  4. 设置contentView和label Equal Heights.