简体   繁体   English

无法以编程方式用视图填充超级视图

[英]Cant fill superview with view programmatically

I'll try to make subview's sizes same its superview. 我将尝试使子视图的大小与其父视图相同。

override func viewDidLayoutSubviews() {
    subView.setTranslatesAutoresizingMaskIntoConstraints(true)
    let viewsDictionary = ["subView": subView]

    view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|[subView]|", options: nil, metrics: nil, views: viewsDictionary))
    view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|[subView]|", options: nil, metrics: nil, views: viewsDictionary))
}

在此处输入图片说明 What I do wrong? 我做错了什么?

========================= ========================

Update! 更新!

subView.setTranslatesAutoresizingMaskIntoConstraints(false)
        let viewsDictionary = ["subView": subView]

        view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-0.0-[subView]-0.0-|", options: nil, metrics: nil, views: viewsDictionary))
        view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-0.0-[subView]-0.0-|", options: nil, metrics: nil, views: viewsDictionary))
    }

But no effect =( 但是没有效果=(

Thx a lot! 多谢!

Two mistakes (at least). 两个错误(至少)。 First: 第一:

subView.setTranslatesAutoresizingMaskIntoConstraints(true)

That needs to be false , not true . 那必须是false ,而不是true

Second: You don't want to simply do this in viewDidLayoutSubviews , because that method will be called many times during the life of your app, and you're going to be adding new constraints unconditionally every time. 第二:您不希望在viewDidLayoutSubviews简单地执行此操作,因为该方法在应用程序的生命周期中将被调用多次,并且每次都将无条件地添加新的约束。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM