我正试图通过其父 View 中的按钮使我的 subview 居中。所以我希望 subview 的中心成为父 View 的中心。我正在尝试使用以下代码:
override func viewDidLoad() {
self.view.backgroundColor = UIColor.redColor()
var menuView = UIView()
var newPlayButton = UIButton()
//var newPlayImage = UIImage(named: "new_game_button_5cs")
var newPlayImageView = UIImageView(image: UIImage(named: "new_game_button_5cs"))
newPlayButton.frame = CGRectMake(0, 0, newPlayImageView.frame.width, newPlayImageView.frame.height)
newPlayButton.setImage(newPlayImage, forState: .Normal)
newPlayButton.backgroundColor = UIColor.whiteColor()
menuView.backgroundColor = UIColor.whiteColor()
menuView.addSubview(newPlayButton)
menuView.addConstraint(
NSLayoutConstraint(item: self.view,
attribute: .CenterX,
relatedBy: .Equal,
toItem: menuView,
attribute: .CenterX,
multiplier: 1, constant: 0)
)
}
不幸的是,当我尝试运行程序时程序中断了。 (线程1:信号SIGABRT)
最佳答案
您的代码触发断言说:
When added to a view, the constraint's items must be descendants of that view (or the view itself).
这意味着您必须在添加约束之前将 menuView
作为 self.view
的 subview 添加。您还应该将约束添加到 self.view
,而不是 menuView
。最后但同样重要的是,通过调用 setTranslatesAutoresizingMaskIntoConstraints(false)
删除隐式添加到 menuView
的自动调整大小掩码约束,否则自动布局会提示约束冲突。
menuView.addSubview(newPlayButton)
menuView.setTranslatesAutoresizingMaskIntoConstraints(false)
self.view.addSubview(menuView)
self.view.addConstraint(
NSLayoutConstraint(item: self.view,
attribute: .CenterX,
relatedBy: .Equal,
toItem: menuView,
attribute: .CenterX,
multiplier: 1, constant: 0)
)
关于ios - super View 中的中心 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27246234/