Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 带有前后页边距的布局,带有等距系统PacingAfter_Ios_Swift_Autolayout_Ios Autolayout - Fatal编程技术网

Ios 带有前后页边距的布局,带有等距系统PacingAfter

Ios 带有前后页边距的布局,带有等距系统PacingAfter,ios,swift,autolayout,ios-autolayout,Ios,Swift,Autolayout,Ios Autolayout,我正试图改变一些布局,我必须少一些布局。 这就是我对分段条的定义,它应该位于容器视图中,具有类似于|-margin-segmented-margin的内容-| 我知道第二行没有任何意义,但我看不到任何EqualtoSystemsPacing在之前和之后,我不知道如何做到这一点,而不必只依赖布局传播 基本上,leadingAchor可以很好地处理这段代码,但是方法名所暗示的trailingAnchor在trailingAnchor之后添加了边距,这不是我想要的 有什么想法吗?我想你可以用这个: s

我正试图改变一些布局,我必须少一些布局。 这就是我对分段条的定义,它应该位于容器视图中,具有类似于|-margin-segmented-margin的内容-|

我知道第二行没有任何意义,但我看不到任何EqualtoSystemsPacing在之前和之后,我不知道如何做到这一点,而不必只依赖布局传播

基本上,leadingAchor可以很好地处理这段代码,但是方法名所暗示的trailingAnchor在trailingAnchor之后添加了边距,这不是我想要的


有什么想法吗?

我想你可以用这个:

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

请相应地更改containerView和常量的名称。

您可以相对于分段控件的trailingAnchor约束容器视图的trailingAnchor

下面是一个简单的例子,我相信它能为您提供所需的布局:

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, constant: 40.0),
            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, multiplier: 1.0),

            seg.centerYAnchor.constraint(equalTo: cView.centerYAnchor),

        ])

    }

}
结果:


我知道我可以使用数字,但我这样做的原因是我想要一个数字更少的布局。我知道这是可以做到的,它对leadingAnchor有效,但我不明白它对TrailingAnchor应该如何起作用。它起作用了:segmentedControl.leadingAnchor.constraintequalToSystemSpacingAfter:view.leadingAnchor,乘数:1,margins.trailingAnchor.constraintequalToSystemSpacingAfter:segmentedControl.trailingAnchor,乘数:1,
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, constant: 40.0),
            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, multiplier: 1.0),

            seg.centerYAnchor.constraint(equalTo: cView.centerYAnchor),

        ])

    }

}