我有以下代码添加带有偏移约束的UITableView
:
self.tableView = UITableView()
self.view.addSubview(self.tableView)
let views: NSDictionary = ["tableView": self.tableView]
let horizontal: NSArray = NSLayoutConstraint.constraintsWithVisualFormat("H:|[tableView]|", options: NSLayoutFormatOptions(0), metrics: nil, views: views)
let vertical: NSArray = NSLayoutConstraint.constraintsWithVisualFormat("V:|[tableView]|", options: NSLayoutFormatOptions(0), metrics: ["offsetTop": 150, "offsetBottom": 49], views: views)
var constraints: NSMutableArray = NSMutableArray()
constraints.addObjectsFromArray(horizontal)
constraints.addObjectsFromArray(vertical)
self.view.addConstraints(constraints)
我一直收到以下错误:
(
"<NSLayoutConstraint:0x17e8d9f0 V:|-(0)-[UITableView:0x18893a00] (Names: '|':UIView:0x17d7da90 )>",
"<NSLayoutConstraint:0x17e8da50 V:[UITableView:0x18893a00]-(0)-| (Names: '|':UIView:0x17d7da90 )>",
"<NSAutoresizingMaskLayoutConstraint:0x17d886e0 h=--& v=--& V:[UITableView:0x18893a00(0)]>",
"<NSLayoutConstraint:0x17d88bd0 'UIView-Encapsulated-Layout-Height' V:[UIView:0x17d7da90(568)]>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x17e8da50 V:[UITableView:0x18893a00]-(0)-| (Names: '|':UIView:0x17d7da90 )>
Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.
我有什么问题吗?我试图在顶部和底部获得一个UITableView
偏移量。我正在阅读本页后面的内容:
https://medium.com/@jsleeuw/mastering-programmatic-auto-layout-b02ed2499d79
答案 0 :(得分:2)
如果以编程方式创建视图并使用自动布局,则需要在将视图插入层次结构之前通过调用setTranslatesAutoresizingMaskIntoConstraints()
来首先禁用UIKit创建的默认约束:
self.tableView = UITableView()
self.tableView.setTranslatesAutoresizingMaskIntoConstraints(false)
self.view.addSubview(self.tableView)