带有 VFL 的 NSLayoutConstraint 在使用“|”时只能水平工作
NSLayoutConstraint with VFL is working only horizontally when using '|'
我有以下 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]-|"
不能正常工作吗?
感谢您的帮助!
当使用 VFL 时,-
字符表示 "use the standard spacing"。
你的情况:
"H:|-[loginView]-|"
"V:|-[loginView]-|"
你说的是 "use the layout margins",默认情况下是:
UIEdgeInsets(top: 0.0, left: 16.0, bottom: 0.0, right: 16.0)
在 iOS11 之前,无法更改由视图控制器管理的根视图的 .layoutMargins
。要让您的紫色视图覆盖整个视图,请将您的 VFL 更改为:
"H:|[loginView]|"
"V:|[loginView]|"
我有以下 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]-|"
不能正常工作吗?
感谢您的帮助!
当使用 VFL 时,-
字符表示 "use the standard spacing"。
你的情况:
"H:|-[loginView]-|"
"V:|-[loginView]-|"
你说的是 "use the layout margins",默认情况下是:
UIEdgeInsets(top: 0.0, left: 16.0, bottom: 0.0, right: 16.0)
在 iOS11 之前,无法更改由视图控制器管理的根视图的 .layoutMargins
。要让您的紫色视图覆盖整个视图,请将您的 VFL 更改为:
"H:|[loginView]|"
"V:|[loginView]|"