我在 中设置非常简单viewDidLoad,只需添加一个视图并通过“锚点”样式将其固定到超级视图的边距:
let myView = UIView(frame: .zero)
myView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(myView)
myView.backgroundColor = UIColor.red
myView.leadingAnchor.constraint(equalTo: view.layoutMarginsGuide.leadingAnchor).isActive = true
myView.trailingAnchor.constraint(equalTo: view.layoutMarginsGuide.trailingAnchor).isActive = true
myView.bottomAnchor.constraint(equalTo: view.layoutMarginsGuide.bottomAnchor).isActive = true
myView.topAnchor.constraint(equalTo: view.layoutMarginsGuide.topAnchor).isActive = true
view.layoutMargins = .zero
Run Code Online (Sandbox Code Playgroud)
问题是在模拟器中运行它时仍然有余量。为什么 layoutMargins 归零被忽略?
由于ios 8.0视图具有其他功能layoutMargins,因此默认情况下,每侧具有8点的值。
当我尝试更改边距时,viewDidLoad它似乎对子视图没有影响:
override func viewDidLoad(){
super.viewDidLoad()
self.view.layoutMargins = UIEdgeInsets(top:100, left:100, bottom:100, right:100)
}
Run Code Online (Sandbox Code Playgroud)
..itd似乎没有任何作用,并且