我有一个UIView的实现。
struct LoginView {
let loginView: UIView = UIView()
func layoutLoginView() -> UIView {
loginView.translatesAutoresizingMaskIntoConstraints = false
loginView.backgroundColor = UIColor.purple
return loginView
}
}
然后,我在viewcontroller中查看上面的内容如下..
class LoginVC: UIViewController {
private let instanceOfLoginView = LoginView()
override func loadView() {
super.loadView()
view.addSubview(instanceOfLoginView.layoutLoginView())
NSLayoutConstraint.activate(NSLayoutConstraint.constraints(withVisualFormat: "H:|-[loginView]-|", options: [], metrics: [:], views: ["loginView":instanceOfLoginView.layoutLoginView()]))
NSLayoutConstraint.activate(NSLayoutConstraint.constraints(withVisualFormat: "V:|-[loginView]-|", options: [], metrics: [:], views: ["loginView":instanceOfLoginView.layoutLoginView()]))
}
问题是只有NSLayout的'H'
侧工作 - 检查下面的屏幕截图 - 。 'V'
无效。
然而,当我应用以下"V:|-8-[loginView]-8-|"
时,它可以工作!!!
你能告诉我为什么"V:|-[loginView]-|"
只是工作,请......?
感谢您的帮助!
答案 0 :(得分:1)
使用VFL时,-
字符表示“使用标准间距”。
在你的情况下:
"H:|-[loginView]-|"
"V:|-[loginView]-|"
你说“使用布局边距”,默认情况下:
UIEdgeInsets(top: 0.0, left: 16.0, bottom: 0.0, right: 16.0)
在iOS 11之前,视图控制器管理的根视图的.layoutMargins
无法更改。要让您的紫色视图覆盖整个视图,请将您的VFL更改为:
"H:|[loginView]|"
"V:|[loginView]|"