在viewDidLoad中添加子视图具有奇怪的行为

时间:2020-04-22 12:12:35

标签: ios swift view

我正在下面的greenView方法中手动创建viewDidload()并将其添加到miidLeView,但是它在结果屏幕中的坐标是错误的吗?这是什么原因呢?应该在哪里添加到middleView?谢谢。

class ViewController: UIViewController {

    @IBOutlet weak var redView: UIView!

    var greenRegion : UIView!
    let greenRegionHeight : CGFloat = 100.0

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.



        greenRegion = UIView(frame: CGRect(x: redView.bounds.size.width*1/8,
                                             y: redView.bounds.size.height/2 - greenRegionHeight/2,
                                             width: redView.bounds.size.width*3/4,
                                             height: greenRegionHeight))

        greenRegion.backgroundColor = UIColor.green
        redView.addSubview(greenRegion)
    }

Here is the screen snapshot

1 个答案:

答案 0 :(得分:0)

您只需要将frame组相关代码放入viewDidLayoutSubviews方法中,一切就可以按预期进行。

override func viewDidLayoutSubviews() {
    greenRegion = UIView(frame: CGRect(x: redView.bounds.size.width*1/8,
                                       y: redView.bounds.size.height/2 - greenRegionHeight/2,
                                       width: redView.bounds.size.width*3/4,
                                       height: greenRegionHeight))

}

输出:

enter image description here