为什么视图的帧宽度通过自动布局总计600乘600

Eva*_*udd 10 storyboard ios autolayout swift

我正在制作一个基本的扫雷应用程序,用于快速练习/娱乐.我想这样做,所以板的大小(10瓦宽)适应任何iOS屏幕.

为此,我通过获取tileContainer view.frame.width和/ 10来设置每个tile的大小.

我的问题是tileContainer视图设置为600,无论如何.在我的故事板上,我将tileContainer设置为等于View容器的宽度,通过CTR单击并拖动到视图并选择相等的宽度.无论我正在测试的设备如何,这都会将tileContainer的宽度设置为600.(这是我的问题,宽度应根据屏幕宽度而变化而不是常数600)

有谁知道如何获得适当的屏幕宽度,无论它使用的设备如何?

Yuc*_*ong 21

使用自动布局时,子视图将在viewDidLayoutSubviews功能后布局.因此,如果您tileContainer.frame.size在此之前调用,例如in viewDidLoad,则它将始终为600乘600(这是storyboard中的默认大小).

viewDidLayoutSubviews:调用以通知视图控制器其视图刚刚布置了其子视图.参考

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()

    print(tileContainer.frame.size); // This is actual size you are looking for
}
Run Code Online (Sandbox Code Playgroud)