如何在Swift中强制显示更新

时间:2015-11-25 13:56:58

标签: ios swift uiview

我正在制作一个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语句来检查董事会的中心是否已经更新,并且每次打印都成功,无论是加载视图还是按下按钮。

1 个答案:

答案 0 :(得分:1)

在viewDidLayoutSubviews中向控制台打印中心坐标。可能你的设置被autolayout覆盖,viewDidLayoutSubviews在调用viewDidLoad后被调用了几次。 通过自动布局系统设置视图中心,或者如果您不想使用它,请关闭xib / storyboard的自动布局。