table 视图单元格大小取决于故事板中的预览设备大小
table view cell size depends on the preview device size in storyboard
我 运行 我的应用程序在我的 iPhone 6 plus 上,屏幕宽度为 414 点,如果我将预览设备设置为 iPhone 7,它有一个屏幕375点的宽度,第一次加载table时,我在viewdidload中打印出table的大小,它的宽度是414,但是table的单元格都有一个宽度375的,我上下滚动后,宽度变成了414。在多个UITableViewController中测试,都给出了相同的结果。
我的问题是:
为什么 table 视图单元格的大小取决于预览设备的大小?
如何使单元格在首次加载时具有正确的大小?
tableView.layoutIfNeeded(), tableView.layoutSubViews() 不起作用。
每次从 Storyboard 加载视图时,它最初的大小与 Storyboard 中指定的大小完全相同,然后当它被添加到视图层次结构时,它的框架将被调整(通过自动布局或您的自定义代码) ).
所以在你的例子中,当一个单元格第一次从情节提要中加载时,它的宽度为 414 点(假设你的 tableView 与视图控制器具有相同的宽度),但是当它被放入实际的视图层次结构中时,它将相应地调整大小(375pt,等于您的 tableview 的宽度)。
tableview 的大小是正确的 414(我的设备大小),但单元格大小是模拟指标的大小,经过几个月的研究,这是我想出的答案:
在我的单元格 class 中,覆盖 awakeFromNib()
,将 frame.size.width
设置为 UIScreen.main.bounds.width
,然后调用 layoutIfNeed()
我 运行 我的应用程序在我的 iPhone 6 plus 上,屏幕宽度为 414 点,如果我将预览设备设置为 iPhone 7,它有一个屏幕375点的宽度,第一次加载table时,我在viewdidload中打印出table的大小,它的宽度是414,但是table的单元格都有一个宽度375的,我上下滚动后,宽度变成了414。在多个UITableViewController中测试,都给出了相同的结果。
我的问题是:
为什么 table 视图单元格的大小取决于预览设备的大小?
如何使单元格在首次加载时具有正确的大小?
tableView.layoutIfNeeded(), tableView.layoutSubViews() 不起作用。
每次从 Storyboard 加载视图时,它最初的大小与 Storyboard 中指定的大小完全相同,然后当它被添加到视图层次结构时,它的框架将被调整(通过自动布局或您的自定义代码) ).
所以在你的例子中,当一个单元格第一次从情节提要中加载时,它的宽度为 414 点(假设你的 tableView 与视图控制器具有相同的宽度),但是当它被放入实际的视图层次结构中时,它将相应地调整大小(375pt,等于您的 tableview 的宽度)。
tableview 的大小是正确的 414(我的设备大小),但单元格大小是模拟指标的大小,经过几个月的研究,这是我想出的答案:
在我的单元格 class 中,覆盖 awakeFromNib()
,将 frame.size.width
设置为 UIScreen.main.bounds.width
,然后调用 layoutIfNeed()