layoutMarginsGuide产生不必要的前导和尾随边距

问题描述 投票:0回答:1

我正在以编程方式在我的视图上创建约束。当我尝试使用layoutMarginsGuide定位符时,顶部和底部定位符会按预期工作,但是即使将insets设置为0,前导和尾端定位符也会创建边距。是什么造成了这些不需要的边距,以及如何正确设置它们?

    override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = .systemRed
        view.directionalLayoutMargins = NSDirectionalEdgeInsets(top: 0, leading: 0, bottom: 0, trailing: 0)


        let childView = UIView(frame: .zero)
        childView.backgroundColor = .systemIndigo
        childView.translatesAutoresizingMaskIntoConstraints = false
        view.addSubview(childView)
        NSLayoutConstraint.activate([
            childView.topAnchor.constraint(equalTo: view.layoutMarginsGuide.topAnchor),
            childView.bottomAnchor.constraint(equalTo: view.layoutMarginsGuide.bottomAnchor),
            childView.leadingAnchor.constraint(equalTo: view.layoutMarginsGuide.leadingAnchor),
            childView.trailingAnchor.constraint(equalTo: view.layoutMarginsGuide.trailingAnchor),
        ])
}
ios swift layout autolayout
1个回答
0
投票

因此,侧面约束不包含空格,并且完全粘贴到侧面,您必须删除layoutMarginsGuide,就像:

NSLayoutConstraint.activate([
      childView.topAnchor.constraint(equalTo: view.layoutMarginsGuide.topAnchor),
      childView.bottomAnchor.constraint(equalTo: view.layoutMarginsGuide.bottomAnchor),
      childView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
      childView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
])
© www.soinside.com 2019 - 2024. All rights reserved.