【问题标题】:How to change UITableViewCell based on height of iPhone model?如何根据 iPhone 模型的高度更改 UITableViewCell?
【发布时间】:2017-05-27 23:56:01
【问题描述】:

我在我的应用程序中使用 UITableViewController。这很好用,但我想知道如何对每个设备进行一些小的更改。 UITableViewCell 的高度并非在所有设备上都很好。在 iPhone 6/7 和 Plus 型号上,它非常适合,但在 iPhone SE/5 和 4 上,行太大了。我知道 Interface Builder 有一个名为 Vary of Traits 的函数,但是当我选择例如 iPhone 4 并更改 UITableViewCell 的高度时,它也将应用于所有其他尺寸。那么这是否可能 - 不同设备的不同单元格高度 - 如果可以,我如何根据不同的设备高度添加不同的单元格高度?

【问题讨论】:

  • 不要基于设备型号。根据表格视图或其父视图的高度计算行高。

标签: ios iphone uitableview


【解决方案1】:

你可以在运行时计算单元格的高度

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat{
}

例如: 让我们假设完美的单元格高度是 70 在 Iphone 7 上的视图高度为 700,所以你会像这样编写代码

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat{
        return self.view.frame.size.height * 0.1
}

所以使用这种方法,您的单元格的大小将始终为视图高度的 10%

【讨论】:

    【解决方案2】:

    UITableView 有一个名为 heightForRowAt indexPath: 的委托方法

    在该方法中,您可以编写将单元格高度定义为屏幕高度、tableView 高度或您需要的任何内容的比例的逻辑

    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        return // screenHeight (or tableViewHeight) / someNumberThatFitsYourNeeds
    }
    

    【讨论】:

    • 您能否告诉我如何选择 iPhone 4 或 SE 等特定高度?
    • 只需检查屏幕高度是否等于 iPhone 4 / SE 屏幕的高度...如果是,则返回所需的单元格高度
    • 有没有可以容纳这些 iPhone 高度的属性?
    • 不,不要硬编码任何东西。不要担心设备型号。简单地将行高基于表视图或视图控制器的视图的高度。
    猜你喜欢
    • 1970-01-01
    • 2012-04-07
    • 1970-01-01
    • 1970-01-01
    • 2011-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多