我發現sourcode:語法爲Swift 3 AddConstraintWithFormat?
view.addConstraintsWithFormat("H:|[v0]|", views: menuBar)
view.addConstraintsWithFormat("V:|[v0(50)]", views: menuBar)
而且我使用斯威夫特3,它不是在我的Xcode工作8
有人能告訴我什麼碼?
非常感謝!
我發現sourcode:語法爲Swift 3 AddConstraintWithFormat?
view.addConstraintsWithFormat("H:|[v0]|", views: menuBar)
view.addConstraintsWithFormat("V:|[v0(50)]", views: menuBar)
而且我使用斯威夫特3,它不是在我的Xcode工作8
有人能告訴我什麼碼?
非常感謝!
你應該寫這樣的功能:
func addContraintsWithFormat(_ format: String, views: UIView...) {
var viewDict = [String: UIView]()
for (index, view) in views.enumerated() {
let key = "v\(index)"
view.translatesAutoresizingMaskIntoConstraints = false
viewDict[key] = view
}
addConstraints(NSLayoutConstraint.constraints(withVisualFormat: format, options: NSLayoutFormatOptions(rawValue: 0), metrics: nil, views: viewDict))
}
它將爲你工作!
可能您需要Visual Format Language才能使用此功能。
您可以使用下面的代碼
let tempView = UIView()
tempView.backgroundColor = UIColor.green
tempView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(tempView)
let views = ["view": view, "tempView": tempView]
let horizontalConstraints = NSLayoutConstraint.constraints(withVisualFormat: "H:[view]-(<=0)-[newView(100)]", options: NSLayoutFormatOptions.alignAllCenterY, metrics: nil, views: views)
let verticalConstraints = NSLayoutConstraint.constraints(withVisualFormat: "V:[view]-(<=0)-[tempView(100)]", options: NSLayoutFormatOptions.alignAllCenterX, metrics: nil, views: views)
view.addConstraints(horizontalConstraints)
view.addConstraints(verticalConstraints)
讓我知道如果這個幫你或沒有。
你必須爲UIView編寫擴展。類似的東西:
extension UIView {
func addConstraintsWithFormat(_ format: String, views: UIView...) {
var viewsDictionary = [String: UIView]()
for (index, view) in views.enumerated() {
let key = "v\(index)"
view.translatesAutoresizingMaskIntoConstraints = false
viewsDictionary[key] = view
}
addConstraints(NSLayoutConstraint.constraints(withVisualFormat: format, options: NSLayoutFormatOptions(), metrics: nil, views: viewsDictionary))
}
}
有用的鏈接,如果學習視覺格式語言! – iUser