Преобразовать язык визуального формата в NSLayoutConstraint или Layout Anchors?
Я видел следующий кусок кода:
override func viewDidLoad() {
super.viewDidLoad()
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()
stackView.translatesAutoresizingMaskIntoConstraints = false
stackView.axis = .Vertical
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]))
for _ in 1 ..< 100 {
let vw = UIButton(type: UIButtonType.System)
vw.setTitle("Button", forState: .Normal)
stackView.addArrangedSubview(vw)
}
}
Это часть простой демонстрации, которая делает UIStackView
работать с UIScrollView
,
К сожалению, все ограничения сделаны с языком визуального формата вместо NSLayoutConstraint
или новый API привязки макета IOS.
Можно ли переписать этот файл с заменой ограничений языка визуального формата на NSLayoutConstraints
или даже лучше API-интерфейс Layout Anchor и как он будет выглядеть?
Пока я попробовал это, и это не сработало:
override func viewDidLoad() {
super.viewDidLoad()
scrollView = UIScrollView()
scrollView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(scrollView)
scrollView.heightAnchor.constraintEqualToAnchor(view.heightAnchor).active = true
scrollView.widthAnchor.constraintEqualToAnchor(view.widthAnchor).active = true
scrollView.topAnchor.constraintEqualToAnchor(view.topAnchor).active = true
scrollView.leadingAnchor.constraintEqualToAnchor(view.leadingAnchor).active = true
stackView = UIStackView()
stackView.translatesAutoresizingMaskIntoConstraints = false
stackView.axis = .Vertical
scrollView.addSubview(stackView)
stackView.heightAnchor.constraintEqualToAnchor(scrollView.heightAnchor).active = true
stackView.widthAnchor.constraintEqualToAnchor(scrollView.widthAnchor).active = true
stackView.topAnchor.constraintEqualToAnchor(scrollView.topAnchor).active = true
stackView.leadingAnchor.constraintEqualToAnchor(scrollView.leadingAnchor).active = true
for _ in 1 ..< 100 {
let vw = UIButton(type: UIButtonType.System)
vw.setTitle("Button2", forState: .Normal)
stackView.addArrangedSubview(vw)
}
}
1 ответ
Да, конечно, это возможно. Вы хотите, чтобы мы сделали это для вас?