我在使用SCLAlertView-Swift库单击TableView上的按钮时尝试弹出窗口。
我还尝试定义约束,以便在旋转设备时尺寸正确。但是,它给了我以下错误:
' UIViewLayoutMarginsGuide' .leading">因为他们没有共同点 祖先。约束或其锚点是否引用了项目 不同的视图层次结构?这是非法的。'
我想我试图从TableViewController获取视图,因为我从该类调用此代码。
let alert = SCLAlertView()
alert.view.autoresizingMask = [.flexibleWidth, .flexibleHeight]
let margins = view.layoutMarginsGuide
alert.view.leadingAnchor.constraint(equalTo: margins.leadingAnchor).isActive = true
alert.view.trailingAnchor.constraint(equalTo: margins.trailingAnchor).isActive = true
alert.view.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: 8).isActive=true
alert.view.topAnchor.constraint(equalTo: view.topAnchor, constant: 8).isActive=true
alert.showInfo("Login", subTitle: "")
为什么我说我在不同的视图层次结构中引用项目?我该怎么做才能解决这个问题?
提前谢谢。
答案 0 :(得分:0)
查看SCLAlertView
here的实施情况,它似乎已添加为UIApplication.shared.keyWindow
的子视图。
我建议将限制挂钩到应用的UIWindow
,而不是TableViewController
的视图。
let rv = UIApplication.shared.keyWindow! as UIWindow
let margins = rv.layoutMarginsGuide