我正在尝试为Facebook SDK登录按钮添加约束。
我将按钮放置在滚动视图中,并尝试为滚动视图中的标签添加一个顶部约束。我已经成功添加了高度约束,没有运行时错误,但实际的约束似乎并未应用于按钮上。
@IBOutlet weak var orLbl: UILabel!
@IBOutlet weak var scrollView: UIScrollView!
override func viewDidLoad() {
super.viewDidLoad()
var loginFBButton = FBSDKLoginButton()
loginFBButton.readPermissions = ["public_profile", "email"]
let heightConstraint = NSLayoutConstraint(
item: loginFBButton,
attribute: NSLayoutAttribute.Height,
relatedBy: NSLayoutRelation.Equal,
toItem: nil,
attribute: NSLayoutAttribute.NotAnAttribute,
multiplier: 1,
constant: 41)
let topConstraint = NSLayoutConstraint(
item: loginFBButton,
attribute: NSLayoutAttribute.TopMargin,
relatedBy: NSLayoutRelation.Equal,
toItem: self.orLbl,
attribute: NSLayoutAttribute.BottomMargin,
multiplier: 1,
constant: 31)
let leadingConstraint = NSLayoutConstraint(
item: loginFBButton,
attribute: NSLayoutAttribute.Leading,
relatedBy: NSLayoutRelation.Equal,
toItem: self.registerButton,
attribute: NSLayoutAttribute.Left,
multiplier: 1,
constant: 0)
let trailingConstraint = NSLayoutConstraint(
item: loginFBButton,
attribute: NSLayoutAttribute.Leading,
relatedBy: NSLayoutRelation.Equal,
toItem: self.registerButton,
attribute: NSLayoutAttribute.Right,
multiplier: 1,
constant: 0)
self.scrollView.addSubview(loginFBButton)
//loginFBButton.center = self.scrollView.center
loginFBButton.addConstraints([heightConstraint, topConstraint])
}
当我添加顶部约束时,出现了运行时错误:
将约束添加到视图中时,其项目必须是该视图的后代(或视图本身)。如果需要在视图层次结构组装之前解析约束,则会崩溃。
终止应用程序,原因是未捕获的异常 'NSGenericException',原因:无法在视图上安装约束。约束引用了视图子树之外的内容吗?那是非法的。
标签和Facebook按钮都在我的滚动视图中?我甚至已经打印出orLbl.superview和loginFBButton.superview,并且对于这两个对象都得到可选的uiscrollview。