UILabel.sizeThatFits

需求:

UIScrollView -- UIView -- UILabel

让UILabel来显示一段文本,如果超过一屏,那么自动滚动条。

思路:

view.addSubview(sc)

sc.addSubview(vc)

vc.addSubview(label)

......

label.font = UIFont.systemFont(ofSize: defaultFont18)

        label.numberOfLines = 0

        label.textColor = .gray

        label.adjustsFontSizeToFitWidth = true

        label.text = "xxxx"

label.lineBreakMode = NSLineBreakMode.byWordWrapping

//        label.backgroundColor = .red

        label.snp.makeConstraints { (make) in

            make.leading.equalToSuperview().offset(10)

            make.trailing.equalToSuperview().offset(10)

            make.top.equalToSuperview().offset(5)

            make.width.equalToSuperview().offset(-20)

        }

        let size = label.sizeThatFits(CGSize( scWidth - 20, height: CGFloat(MAXFLOAT)))

        print("size:(size.height)")

//关键就在这里,这里实际了,固定宽度,求取实际的label高度。如果是sizetofit来实现,会出现一行文本直接就是一行,不会自动折行,导致显示不全。
//1、111111111111111111111111111111111==》这里开始超过一屏。1111111111111111111111。 label.frame
= CGRect(x: 10, y: 10, scWidth - 20, height: size.height) labelView.frame = CGRect(x: 0, y: 0, scWidth, height: label.frame.height + 50) print("label:(label.frame.height)") sc.contentSize = CGSize( scWidth, height: labelView.frame.height)
道法自然
原文地址:https://www.cnblogs.com/jiduoduo/p/14640837.html