需求:
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(width: scWidth - 20, height: CGFloat(MAXFLOAT))) print("size:\(size.height)")
//关键就在这里,这里实际了,固定宽度,求取实际的label高度。如果是sizetofit来实现,会出现一行文本直接就是一行,不会自动折行,导致显示不全。
//1、111111111111111111111111111111111==》这里开始超过一屏。1111111111111111111111。 label.frame = CGRect(x: 10, y: 10, width: scWidth - 20, height: size.height) labelView.frame = CGRect(x: 0, y: 0, width: scWidth, height: label.frame.height + 50) print("label:\(label.frame.height)") sc.contentSize = CGSize(width: scWidth, height: labelView.frame.height)