什么是布局中的系统间距?

What is system spacing in a layout?

我很难理解视图之间的“系统间距”或“标准间距”。

import UIKit
import PlaygroundSupport

let rootView = UIView(frame: CGRect(x: 100, y: 100, width: 500, height: 500))
rootView.backgroundColor = .white

let containerView = UIView(frame: CGRect(origin: .zero, size: .init(width: 300, height: 200)))
containerView.backgroundColor = .yellow
rootView.addSubview(containerView)

let button = UIButton()
button.setTitle("Button", for: .normal)
button.backgroundColor = .red
containerView.addSubview(button)
button.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
    button.widthAnchor.constraint(equalToConstant: 100),
    button.leadingAnchor.constraint(equalToSystemSpacingAfter: containerView.leadingAnchor, multiplier: 1)
])

PlaygroundPage.current.needsIndefiniteExecution = true
PlaygroundPage.current.liveView = rootView

我注意到如果我替换的话会有不同:

button.leadingAnchor.constraint(equalTo: containerView.leadingAnchor)

for equalToSystemSpacingAfter在按钮的位置。另外,equalToSystemSpacingAfter 如何适应文本大小的变化?

第一个问题的答案:

difference between constraint(equalTo: & .constraint(equalToSystemSpacingAfter:

第二个问题的答案:

Also, how does equalToSystemSpacingAfter accommodate changes in the text size?

由于您使用的是 100 点的固定宽度,因此如果按钮标题的长度增加,它将被简单地截断。要解决这个问题,你应该避免设置它的精确宽度。