我正在制作一个Tic Tac Toe应用程序,我想在加载视图时将电路板放在中心位置。
我已经制作了centerBoard()
函数,该函数在viewDidLoad()
中被调用。
这是函数的代码:
func centerBoard() {
print("centerBoard() triggered")
let centerX = (outerView.frame.size.width)/2
boardView.center = CGPointMake(centerX,250)
if boardView.center == CGPoint(x: centerX,y: 250) {
print("centerBoard() successful")
}
boardView.setNeedsLayout()
boardView.setNeedsDisplay()
}
但是,只有在按下测试按钮时,尽管运行完全相同的代码,但在加载视图时,电路板不会改变位置。我做了if
语句来检查董事会的中心是否已经更新,并且每次打印都成功,无论是加载视图还是按下按钮。
答案 0 :(得分:1)
在viewDidLayoutSubviews中向控制台打印中心坐标。可能你的设置被autolayout覆盖,viewDidLayoutSubviews在调用viewDidLoad后被调用了几次。 通过自动布局系统设置视图中心,或者如果您不想使用它,请关闭xib / storyboard的自动布局。