我尝试以编程方式简单地将GridView
与Autolayout
约束对齐。建议的答案here和here建议使用
NSLayoutConstraint(item: self.view, attribute: NSLayoutAttribute.CenterX, relatedBy: NSLayoutRelation.Equal,
toItem: self.gridView, attribute: NSLayoutAttribute.CenterX, multiplier: 1, constant:0)
我正在添加这样的约束:
func setupConstraints() {
let centerX = NSLayoutConstraint(item: self.view, attribute: NSLayoutAttribute.CenterX, relatedBy: NSLayoutRelation.Equal,
toItem: self.gridView, attribute: NSLayoutAttribute.CenterX, multiplier: 1, constant:0)
let centerY = NSLayoutConstraint(item: self.view, attribute: NSLayoutAttribute.CenterY, relatedBy: NSLayoutRelation.Equal,
toItem: self.gridView, attribute: NSLayoutAttribute.CenterY, multiplier: 1, constant:0)
self.view.addConstraints([centerX, centerY])
}
但是,这对我来说似乎不起作用。运行应用程序时,视图位于左上角,控制台显示有关同时满足约束的问题的疯狂输出。
答案 0 :(得分:3)
这应该有效:
func setupConstraints() {
self.viewToCenter.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint(item: self.viewToCenter, attribute: NSLayoutAttribute.CenterX, relatedBy: NSLayoutRelation.Equal,
toItem: self.view, attribute: NSLayoutAttribute.CenterX, multiplier: 1, constant:0).active = true
NSLayoutConstraint(item: self.viewToCenter, attribute: NSLayoutAttribute.CenterY, relatedBy: NSLayoutRelation.Equal,
toItem: self.view, attribute: NSLayoutAttribute.CenterY, multiplier: 1, constant:0).active = true
}
您的第一项和第二项错误,并且不使用addConstraints
,因为它已经或将被弃用(iOS <= 8)。
答案 1 :(得分:1)
我认为您不添加此代码
self.gridView.translatesAutoresizingMaskIntoConstraints = false