我想在 UILabel
中放置一个带有很长文本的 UIScrollView
以滚动其内容。为此,我有以下代码:
import UIKit
class InfoViewController: UIViewController {
private let info : String =
"""
A VERY LONG TEXT HERE
"""
private let scrollView : UIScrollView = {
let view = UIScrollView()
view.translatesAutoresizingMaskintoConstraints = false
view.keyboardDismissMode = .onDrag
view.isScrollEnabled = true
return view
}()
private let containerView : UIView = {
let view = UIView()
view.translatesAutoresizingMaskintoConstraints = false
return view
}()
private let infoTitleLabel : UILabel = {
let view = UILabel()
view.translatesAutoresizingMaskintoConstraints = false
view.text = "Title"
view.font = UIFont.systemFont(ofSize: 18,weight: .bold)
return view
}()
private lazy var infoLabel : UILabel = {
let view = UILabel()
view.translatesAutoresizingMaskintoConstraints = false
view.numberOfLines = 0
view.text = self.info
return view
}()
override func viewDidLoad() {
super.viewDidLoad()
safeArea = view.layoutMarginsGuide
setupView()
}
private var safeArea : UILayoutGuide!
private func setupView()
{
view.backgroundColor = .white
title = "Info"
view.addSubview(scrollView)
containerView.addSubview(infoTitleLabel)
containerView.addSubview(infoLabel)
scrollView.addSubview(containerView)
let constraints = [
scrollView.topAnchor.constraint(equalTo: safeArea.topAnchor),scrollView.bottomAnchor.constraint(equalTo: safeArea.bottomAnchor),scrollView.leadingAnchor.constraint(equalTo: view.leadingAnchor),scrollView.trailingAnchor.constraint(equalTo: view.trailingAnchor),containerView.topAnchor.constraint(equalTo: scrollView.topAnchor),containerView.bottomAnchor.constraint(equalTo: scrollView.bottomAnchor),containerView.leadingAnchor.constraint(equalTo: scrollView.leadingAnchor),containerView.trailingAnchor.constraint(equalTo: scrollView.trailingAnchor),containerView.widthAnchor.constraint(equalTo: scrollView.widthAnchor),containerView.heightAnchor.constraint(equalTo: scrollView.heightAnchor),infoTitleLabel.topAnchor.constraint(equalTo: safeArea.topAnchor,constant: 10),infoTitleLabel.leadingAnchor.constraint(equalTo: containerView.leadingAnchor,infoTitleLabel.heightAnchor.constraint(equalToConstant: 20),infoLabel.leadingAnchor.constraint(equalTo: infoTitleLabel.leadingAnchor),infoLabel.trailingAnchor.constraint(equalTo: containerView.trailingAnchor,constant: -10),infoLabel.topAnchor.constraint(equalTo: infoTitleLabel.bottomAnchor,infoLabel.bottomAnchor.constraint(equalTo: containerView.bottomAnchor)
]
NSLayoutConstraint.activate(constraints)
}
}
但我没有看到滚动发生。这是什么原因?是否与动态标签内容大小有关?