-1

我有以下 UIView 的实现。

struct LoginView {
let loginView: UIView = UIView()

func layoutLoginView() -> UIView {

    loginView.translatesAutoresizingMaskIntoConstraints = false
        loginView.backgroundColor = UIColor.purple

    return loginView
  } 
}

然后,我在视图控制器中对上述内容进行细分,如下所示..

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()]))

}

问题是只有'H'NSLayout 的一侧在工作-检查下面的屏幕截图-。'V'不工作。

但是,当我应用以下内容时"V:|-8-[loginView]-8-|",它可以工作!!!

你能告诉我为什么"V:|-[loginView]-|"不简单的工作,拜托..?

感谢你的帮助!

在此处输入图像描述

4

1 回答 1

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]|"
于 2017-07-28T17:41:21.627 回答