【问题标题】:TableView horizontal scrolling according to cell widthTableView根据单元格宽度水平滚动
【发布时间】:2019-07-11 03:41:18
【问题描述】:

我在滚动视图中有表格视图,它将根据表格视图单元格宽度滚动。我已经从顶部、底部、前导和尾随设置了滚动视图。然后我在滚动视图中给出了相同的约束,包括 centerX和 centerY。然后对于水平滚动,我已将尾随和 centerX 优先级设置为 250。但我的表格视图没有滚动。我想通过自动布局设置它。

如果标签在表格视图单元格内增加,我希望表格水平滚动。

这是我的视图层次结构

【问题讨论】:

  • tableview 不水平滚动,使用collection view。
  • 我不必滚动表格视图单元格,但我必须滚动表格视图本身。
  • 你认为滚动tableview需要额外的scrollview吗?
  • 其实你在tableview之外添加的scrollview,它必须在单元格内,然后添加你的标签。滚动视图内容大小必须与标签大小一起计算。
  • 我已经尝试过了,但我想滚动我的表格视图而不是里面的单元格。

标签: ios uiscrollview autolayout


【解决方案1】:

@Zahid 我在 github 上做了一个公开的例子,我写的内容如下:

https://github.com/amichnia/stack-54735700

原答案:

如前所述,表格视图通常不会水平滚动。 但是没有人说不能将表格视图放在水平滚动的 UIScrollView 中。不过这里会有一些挑战:

  1. 我认为自动调整单元格大小的自动布局效果不佳。

  2. 您需要弄清楚滚动视图/表格视图手势识别器的顺序。您可以使用 UIGestureRecognizer 委托方法来解决它们的冲突

  3. 您需要确定表格视图的宽度。你可以用旧的讨厌的方式来做:

    • 首先计算每个单元格的大小,
    • 取这些尺寸的最大值
    • 将其设置为表格视图宽度
    • 重新加载数据

值得麻烦吗?这是你的电话。

使用您的设置(我将滚动视图视为根视图),最简单(但不是最好)的选项是禁用表格视图的滚动,启用滚动视图的双向滚动,并仅更新整个表格视图的大小。 不过,它只适用于少量细胞!

【讨论】:

  • 你是认真的吗?如果你停止滚动 tableView 那么你如何出队???
  • OPs TableView 不是静态的,这意味着他必须显示多个单元格可能是 100,但您的情况只有在有 3-4 个单元格都可以在单个 tableview 加载中显示时才有效。这不是误导,只是做好练习。
  • 我在您的演示中遇到了 2 个问题,1. 使用 this 更改您的 cellForRow 并检查 UI 输出。 2.你使用tableViewHeight.constant = CGFloat(50 * items)作为tableView高度,如果每个单元格都有不同的高度怎么办。还能用吗?
  • @daiha_boy 这就是挑战。正如您所看到的,整个表格视图的高度是预先设置的,与宽度相同。使其“动态”(一种可能性): 1. 您可以在执行 tableView.reloadData() 之前执行“预渲染”传递 2. 在此传递中,您将单元格队列并计算它们的大小,保持: a) 最大宽度到目前为止 - maxWidth b) 所有单元格的高度总和 - sumHeight 3. 之后,您可以: 1. 将 tableview 宽度常量设置为 maxWidth 2. 将 tableview 高度常量设置为 sumHeight 4. 调用重新加载数据自动调整大小之前的方式
猜你喜欢
  • 2022-01-17
  • 2021-04-17
  • 1970-01-01
  • 2017-04-18
  • 1970-01-01
  • 2012-10-20
  • 1970-01-01
  • 2014-09-12
  • 1970-01-01
相关资源
最近更新 更多