在以下函数中,我定义了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”的中心定义为它所驻留的viewcontroller的中心,它也会在Viewcontroller的中心出现一个角,而不是在viewcontroller的中心。我尝试了其他各种方法来定义位置(NSLayoutConstraints,frame.x,frame.y等),但是所有方法都有此结果。
如果有人能告诉我为什么会这样,以及如何将UIView置于其父视图控制器的中心,我将不胜感激!
最佳答案
您的问题是将中心设置在框架之前。由于创建的视图没有frame参数,因此您的框架为{0,0}。
因此,您当前正在使子视图居中,然后调整其大小,因此发生了这种情况:
您需要做的是调整子视图的大小,然后将其居中,如下所示:
因此,您可以交换居中和框架逻辑:
gameOverView.frame.size = CGSize(width: 200, height: 300)
gameOverView.center = super.view.center
否则,甚至更容易在创建视图时传递框架(您甚至可以传递适当的x,y坐标以在此处居中):
var gameOverView: UIView = UIView(frame: CGRectMake(0, 0, 200, 300))