表格视图单元格大小取决于故事板中的预览设备大小

时间:2017-08-06 00:34:57

标签: ios swift ios-autolayout

我正在我的iPhone 6 plus上运行我的应用程序,其屏幕宽度为414点,如果我将预览设备设置为iPhone 7,屏幕宽度为375点,当桌面首次加载时,我打印在viewdidload中输出表的大小,它的宽度为414,但是表格单元格的宽度都是375,在我向上和向后滚动后,宽度变为414.在多个UITableViewController中测试,都给出了相同的结果

我的问题是:

为什么表格视图单元格的大小取决于预览设备大小?

如何在首次加载时使单元格具有正确的大小?

tableView.layoutIfNeeded(),tableView.layoutSubViews()不起作用。

2 个答案:

答案 0 :(得分:4)

tableview具有正确的大小414(我的设备大小),但不知何故,单元格大小是模拟指标的大小,经过几个月的研究,这就是我提出的答案:

在我的手机类中,覆盖awakeFromNib(),将frame.size.width设为UIScreen.main.bounds.width,然后拨打layoutIfNeed()

答案 1 :(得分:0)

每次从Storyboard加载视图时,它最初都会完全具有在故事板中指定的大小,然后当它添加到视图层次结构时,其框架将被调整(通过Autolayout或您的自定义代码)。

因此,在您的情况下,当从故事板首次加载单元格时,它将具有414个点的宽度(假设您的tableView与视图控制器具有相同的宽度),但是当它被放入实际视图层次结构中时,它将相应调整大小(375pt,等于你的tableview的宽度)。