【发布时间】:2021-01-15 06:15:05
【问题描述】:
我正在尝试在滚动视图中创建一个堆栈视图,该视图尊重超级视图的布局边距。所以我将preservesSuperviewLayoutMargins 设置为true,并提出以下代码:
import UIKit
class ViewController: UIViewController {
let stackView: UIStackView = {
let sv = UIStackView()
sv.axis = .vertical
sv.preservesSuperviewLayoutMargins = true
sv.translatesAutoresizingMaskIntoConstraints = false
return sv
}()
let scrollView: UIScrollView = {
let sv = UIScrollView()
sv.translatesAutoresizingMaskIntoConstraints = false
sv.alwaysBounceVertical = true
sv.preservesSuperviewLayoutMargins = true
return sv
}()
override func viewDidLoad() {
view.layoutMargins = UIEdgeInsets(top: 0, left: 64, bottom: 0, right: 64)
view.addSubview(scrollView)
scrollView.addSubview(stackView)
NSLayoutConstraint.activate([
stackView.leftAnchor.constraint(equalTo: view.leftAnchor),
stackView.rightAnchor.constraint(equalTo: view.rightAnchor),
])
NSLayoutConstraint.activate([
scrollView.contentLayoutGuide.topAnchor.constraint(equalTo: stackView.topAnchor),
scrollView.contentLayoutGuide.bottomAnchor.constraint(equalTo: stackView.bottomAnchor),
scrollView.contentLayoutGuide.leftAnchor.constraint(equalTo: stackView.leftAnchor),
scrollView.contentLayoutGuide.rightAnchor.constraint(equalTo: stackView.rightAnchor),
])
NSLayoutConstraint.activate([
view.topAnchor.constraint(equalTo: self.scrollView.topAnchor),
view.bottomAnchor.constraint(equalTo: self.scrollView.bottomAnchor),
view.leftAnchor.constraint(equalTo: self.scrollView.leftAnchor),
view.rightAnchor.constraint(equalTo: self.scrollView.rightAnchor),
])
let l = UILabel()
l.text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Itaque his sapiens semper vacabit. An est aliquid, quod te sua sponte delectet? Aliud igitur esse censet gaudere, aliud non dolere. Quasi ego id curem, quid ille aiat aut neget. Cur post Tarentum ad Archytam? Duo Reges: constructio interrete. Atque etiam valítudinem, vires, vacuitatem doloris non propter utilitatem solum, sed etiam ipsas propter se expetemus. Naturales divitias dixit parabiles esse, quod parvo esset natura contenta."
l.numberOfLines = 0
l.translatesAutoresizingMaskIntoConstraints = false
stackView.addArrangedSubview(l)
super.viewDidLoad()
}
}
但是,lorem ipsum 文本完全忽略了左侧 64 和右侧 64 的边距。
我在这里错过了什么?
【问题讨论】:
标签: ios uiscrollview uikit uistackview