Ios 与可视布局约束对应的代码是什么?

Ios 与可视布局约束对应的代码是什么?,ios,swift,ios-autolayout,Ios,Swift,Ios Autolayout,与可视布局约束对应的代码是什么?我想将其转换为NSLayoutConstraint.activate([])格式 scrollView = UIScrollView() scrollView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(scrollView) view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|[scr

与可视布局约束对应的代码是什么?我想将其转换为
NSLayoutConstraint.activate([])
格式

scrollView = UIScrollView()
scrollView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(scrollView)

view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|[scrollView]|", options: .AlignAllCenterX, metrics: nil, views: ["scrollView": scrollView]))
view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|[scrollView]|", options: .AlignAllCenterX, metrics: nil, views: ["scrollView": scrollView]))

stackView = UIStackView()
scrollView.addSubview(stackView)

scrollView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|[stackView]|", options: NSLayoutFormatOptions.AlignAllCenterX, metrics: nil, views: ["stackView": stackView]))
scrollView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|[stackView]", options: NSLayoutFormatOptions.AlignAllCenterX, metrics: nil, views: ["stackView": stackView]))
该代码段来自。

可视化格式语言(VFL)可以同时创建多个约束,而这些约束确实可以。前三个VFL分别创建两个约束,最后一个创建一个约束

我建议使用布局锚来创建约束。下面是使用
NSLayoutConstraint.activate()
和布局锚定的代码的等效代码:

scrollView = UIScrollView()
scrollView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(scrollView)

NSLayoutConstraint.activate([
    scrollView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
    scrollView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
    scrollView.topAnchor.constraint(equalTo: view.topAnchor),
    scrollView.bottomAnchor.constraint(equalTo: view.bottomAnchor)
])

stackView = UIStackView()
scrollView.addSubview(stackView)

NSLayoutConstraint.activate([
    stackView.leadingAnchor.constraint(equalTo: scrollView.leadingAnchor),
    stackView.trailingAnchor.constraint(equalTo: scrollView.trailingAnchor),
    stackView.topAnchor.constraint(equalTo: scrollView.topAnchor)
])

注意事项:

  • 我调查了
    .alignAllCenterX
    对结果约束的影响,该选项在本例中没有任何作用
  • 如果在创建约束之前添加了两个子视图,则可以将所有约束组合成一个
    NSLayoutConstraint.activate()
    调用。我认为两次通话更清晰,因为每组通话都有一个目的
  • NSLayoutConstraint.activate()
    是智能的,它将约束添加到适当的视图中。它是首选,从iOS 8开始提供
  • 确保设置了
    stackView.translatesAutoResizengMaskintoConstraints=false
    stackView.axis=.vertical
    。(为了更简洁,您可能不考虑这些内容)
  • 可视化格式语言(VFL)可以同时创建多个约束,而这些约束确实可以。前三个VFL分别创建两个约束,最后一个创建一个约束

    我建议使用布局锚来创建约束。下面是使用
    NSLayoutConstraint.activate()
    和布局锚定的代码的等效代码:

    scrollView = UIScrollView()
    scrollView.translatesAutoresizingMaskIntoConstraints = false
    view.addSubview(scrollView)
    
    NSLayoutConstraint.activate([
        scrollView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
        scrollView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
        scrollView.topAnchor.constraint(equalTo: view.topAnchor),
        scrollView.bottomAnchor.constraint(equalTo: view.bottomAnchor)
    ])
    
    stackView = UIStackView()
    scrollView.addSubview(stackView)
    
    NSLayoutConstraint.activate([
        stackView.leadingAnchor.constraint(equalTo: scrollView.leadingAnchor),
        stackView.trailingAnchor.constraint(equalTo: scrollView.trailingAnchor),
        stackView.topAnchor.constraint(equalTo: scrollView.topAnchor)
    ])
    

    注意事项:

  • 我调查了
    .alignAllCenterX
    对结果约束的影响,该选项在本例中没有任何作用
  • 如果在创建约束之前添加了两个子视图,则可以将所有约束组合成一个
    NSLayoutConstraint.activate()
    调用。我认为两次通话更清晰,因为每组通话都有一个目的
  • NSLayoutConstraint.activate()
    是智能的,它将约束添加到适当的视图中。它是首选,从iOS 8开始提供
  • 确保设置了
    stackView.translatesAutoResizengMaskintoConstraints=false
    stackView.axis=.vertical
    。(为了更简洁,您可能不考虑这些内容)

  • 您可以直接将view.addConstraints替换为NSLayoutConstraint.activate,如果需要,可以继续使用visualFormat。我不想对约束使用视觉格式。好的,我可以帮您解决这个问题。我必须调查
    .alignAllCenterX
    对结果约束的作用…确保您具有
    stackView.translatesAutoResizezingMacintoConstraints=false
    stackView.axis=.vertical
    。您可能只是将这些排除在问题之外,以使其更加简洁。您可以直接将view.addConstraints替换为NSLayoutConstraint.activate,并继续使用visualFormat(如果需要)。我不想对约束使用视觉格式。好的,我可以帮您解决这个问题。我必须调查
    .alignAllCenterX
    对结果约束的作用…确保您具有
    stackView.translatesAutoResizezingMacintoConstraints=false
    stackView.axis=.vertical
    。你可能只是为了让它更简洁而忽略了这些。