我有一个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]-|"
不能简单地工作吗?
感谢你的帮助!
1条答案
按热度按时间q0qdq0h21#
使用VFL时,
-
字符表示 “使用标准间距”。在您的案例中:
你说 “使用布局边距",默认情况下是:
在iOS 11之前,由视图控制器管理的根视图的
.layoutMargins
无法更改。要使紫色视图覆盖整个视图,请将VFL更改为: