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