【问题标题】:Autoresize cell xib to tableview cell width and row height将单元格 xib 自动调整为表格视图单元格宽度和行高
【发布时间】:2014-12-26 00:51:00
【问题描述】:

我目前正在使用自定义 tableviewcell xib,并希望它的大小自动调整为 tableview 的宽度和行的高度。

单元格视图的大小不会自动调整到表格视图。因此,我尝试更改 tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) 委托内的框架,但没有反映任何更改(如果我在实际更改之前和之后打印框架大小。)

有人知道这个的解决方案吗?最好的情况是让单元格的框架自动调整为表格视图的宽度和行高。

编辑:经过进一步检查,问题可能与 iOS8 Size 类有关。当我在 xib 中调整单元格的大小时,它只会扩展到比表格视图的大小更大的宽度。标签应该位于中心(已将它们设置为约束并以编程方式获得相同的结果)。

截图如下:

【问题讨论】:

  • -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
  • 什么意思,不调整?单元格不是表格视图的全宽吗?
  • @rdelmar 是的,单元格将保持在 xib 中定义的宽度,无论它更大或更小。
  • 嗯...当我使用基于 xib 的单元格时,我从未见过这种情况。我刚刚检查了我的一个项目,无论我在 xib 中制作什么大小的单元格,它总是会调整为表格的宽度。我认为您需要提供有关您在 xib 中所做操作的更多信息。
  • @rdelmar 没关系,这是我的错误。在视图控制器中有一个表格视图,我从未设置约束,也没有定义要调整的表格视图,因此它将视图控制器的基本大小保留在情节提要内,这就是为什么标签似乎永远不会居中的原因。感谢您的帮助

标签: ios iphone uitableview swift


【解决方案1】:

发现了问题,这是我的错误。我从未在 ViewController 中对 TableView 设置约束,因此它保持了 iOS 8 中引入的 Size Classes 定义的默认基本尺寸。

这就是为什么单元格的宽度大约是视图控制器宽度的两倍。

【讨论】:

  • 我在使用 TableViewController 时遇到了同样的问题。如何使用约束?使用 IB 使尺寸适合超级视图的选项显示为灰色。
  • 天哪,我花了这么多时间试图解决这个问题,我只是忘记了限制!谢谢先生提醒!
【解决方案2】:

我从你的问题中了解到的是你想设置单元格的宽度等于表格的宽度并且单元格的高度等于 tableviewCell 的高度!

默认情况下tableviewCell的高度是44,所以你可以设置Cell的高度为44!你得到tableview的宽度

self.tableview.frame.size.width

你可以通过cell.frame设置单元格的Frame!

举例

CGRect cellRect = CGRectMake(0, 0, self.tableview.frame.size.width ,44);
cell.frame = cellRect;

希望一切顺利,这可能会对您有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多