使用equalToSystemSpacingAfter之前和之后的边距进行布局

我正在尝试将某些布局更改为无数字的布局。 这就是我应该在容器视图内使用类似| - margin - segmented - margin -|

的分段条的功能
segmentedControl.leadingAnchor.constraint(equalToSystemSpacingAfter: margins.leadingAnchor,multiplier: 1),segmentedControl.trailingAnchor.constraint(equalToSystemSpacingAfter: margins.trailingAnchor,

我知道第二行没有任何意义,但是之后我看不到任何equalToSystemSpacingBEFORE,而且我不确定如何仅依靠布局传播来做到这一点。

基本上,LeadingAchor可以在此代码下正常工作,但是traceingAnchor(如方法名称所暗示的)在尾随锚之后添加了余量,这不是我想要的。

有什么想法吗?

Boney2009 回答:使用equalToSystemSpacingAfter之前和之后的边距进行布局

您可以相对于分段控件的TrailingAnchor约束“容器”视图的tailingAnchor。

这是一个简单的示例,我相信为您提供所需的布局:

class SysSpacingViewController: UIViewController {

    let seg: UISegmentedControl = {
        let v = UISegmentedControl(items: ["A","B","C"])
        v.translatesAutoresizingMaskIntoConstraints = false
        return v
    }()

    let cView: UIView = {
        let v = UIView()
        v.translatesAutoresizingMaskIntoConstraints = false
        v.backgroundColor = .white
        return v
    }()

    override func viewDidLoad() {
        super.viewDidLoad()

        view.backgroundColor = .systemYellow

        cView.addSubview(seg)
        view.addSubview(cView)

        let g = view.safeAreaLayoutGuide
        let m = cView.layoutMarginsGuide

        NSLayoutConstraint.activate([

            cView.topAnchor.constraint(equalTo: g.topAnchor,constant: 40.0),cView.leadingAnchor.constraint(equalTo: g.leadingAnchor,cView.trailingAnchor.constraint(equalTo: g.trailingAnchor,constant: -40.0),cView.heightAnchor.constraint(equalToConstant: 70.0),seg.leadingAnchor.constraint(equalToSystemSpacingAfter: m.leadingAnchor,multiplier: 1.0),m.trailingAnchor.constraint(equalToSystemSpacingAfter: seg.trailingAnchor,seg.centerYAnchor.constraint(equalTo: cView.centerYAnchor),])

    }

}

结果:

enter image description here

,

我认为您可以使用此

segmentedControl.leadingAnchor.constraint(equalTo: containerView.leadingAnchor,constant: 8).isActive = true
segmentedControl.trailingAnchor.constraint(equalTo: containerView.trailingAnchor,constant: -8).isActive = true

请相应地更改containerViewconstants的名称。

本文链接:https://www.f2er.com/2751444.html

大家都在问