【问题标题】: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,等于您的表格视图的宽度)。

      【讨论】:

        猜你喜欢
        • 2017-01-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-17
        • 2017-01-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多