【问题标题】:layoutMarginsGuide producing unwanted leading and trailing marginslayoutMarginsGuide 产生不需要的前导和尾随边距
【发布时间】:2020-08-25 14:50:53
【问题描述】:

我正在以编程方式对我的视图创建约束。当我尝试使用 layoutMarginsGuide 锚点时,顶部和底部锚点按预期工作,但即使插入设置为 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】:

    为了使侧面约束不包含空格并完全粘在侧面,您必须删除 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),
    ])
    

    【讨论】:

      【解决方案2】:

      与其他视图不同,系统管理视图控制器根视图的边距。默认情况下,它会根据视图宽度强制执行 16 或 20 点的最小左边距和右边距。顶部和底部边距默认为零。

      因此,如果您想要更少的根视图边距,那么系统最小。您必须将 false 设为 viewRespectsSystemMinimumLayoutMargins

      viewRespectsSystemMinimumLayoutMargins = false
      view.directionalLayoutMargins = NSDirectionalEdgeInsets(top: 0, leading: 0, bottom: 0, trailing: 0)
      

      【讨论】:

      • 试着打印 systemMinimumMargins by : print(systemMinimumLayoutmargins)
      猜你喜欢
      • 1970-01-01
      • 2022-06-27
      • 1970-01-01
      • 2019-09-28
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      • 2013-05-14
      • 1970-01-01
      相关资源
      最近更新 更多