gpt4 book ai didi

ios - UIView 出现错误的中心位置

转载 作者:搜寻专家 更新时间:2023-10-31 21:52:00 25 4
gpt4 key购买 nike

在下面的函数中,我定义了 UIView 的所有必要特征:

func OpenController() {
var gameOverView: UIView = UIView()

gameOverView.center = super.view.center
gameOverView.frame.size = CGSize(width: 200, height: 300)
gameOverView.backgroundColor = UIColor.grayColor()

self.view.addSubview(gameOverView)
}

即使我将 UIView“gameOverView”的中心定义为它所在的 View Controller 的中心,它也会在 View Controller 的中心显示一个角,而不是在 View Controller 的中心。我尝试了各种其他定义位置的方法(NSLayoutConstraints、frame.x、frame.y 等),但都得到了这个结果。

如果有人能告诉我为什么会发生这种情况以及如何将 UIView 在其父 View Controller 中居中,我将不胜感激!

最佳答案

这里的问题是您的中心设置在框架之前。由于您创建的 View 没有 frame 参数,因此您的 frame 是 {0, 0}。

所以您当前将 subview 居中然后调整它的大小,所以发生了这种情况:

Centering a {0, 0} subview Resizing after centering the {0, 0} subview

您需要做的是调整 subview 的大小然后将其居中,如下所示:

Resizing a subview Centering a subview

所以你可以交换你的居中和框架逻辑:

gameOverView.frame.size = CGSize(width: 200, height: 300)
gameOverView.center = super.view.center

否则更容易在创建 View 时传递框架(您甚至可以传递适当的 x、y 坐标以使其在此处居中):

var gameOverView: UIView = UIView(frame: CGRectMake(0, 0, 200, 300))

关于ios - UIView 出现错误的中心位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28226408/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com