2017-02-16 68 views
0

我發現sourcode:語法爲Swift 3 AddConstraintWithFormat?

view.addConstraintsWithFormat("H:|[v0]|", views: menuBar) 
view.addConstraintsWithFormat("V:|[v0(50)]", views: menuBar) 

而且我使用斯威夫特3,它不是在我的Xcode工作8

有人能告訴我什麼碼?

非常感謝!

回答

3

你應該寫這樣的功能:

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才能使用此功能。

+0

有用的鏈接,如果學習視覺格式語言! – iUser

-1

您可以使用下面的代碼

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) 

讓我知道如果這個幫你或沒有。

1

你必須爲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)) 
    } 
}