gpt4 book ai didi

ios - 在 UITableView 上设置最小内容大小

转载 作者:行者123 更新时间:2023-11-30 11:58:41 26 4
gpt4 key购买 nike

我在 View Controller 的顶部有一个 View ,在其下面有一个表格 View 。

我已经做到了,当桌面 View 向上滚动时,顶 View 也会向上滚动,达到最大量,比如说 50 点。

tableview 的顶部插图也为 50:

tableView = UIEdgeInsets(top: 50, left: 0, bottom: 0, right: 0)

...这样它的单元格就从顶 View 下方开始。

在 ScrollView 委托(delegate)中有一些代码如下:

func scrollViewDidScroll(_ scrollView: UIScrollView) {
let scrollViewYOffset = ...
topViewHeightConstraint.constant = max(minTopViewHeight, minTopViewHeight - scrollViewYOffset)
}

这确保当用户在表格 View 上向下拖动时,顶部 View “粘”在其上,并且当用户向上推表格 View 时,顶部 View 也会向上推。

我画了这张图是为了更好地描述 Storyboard 的样子:

enter image description here

到目前为止一切顺利。当有很多单元格并且用户向上滚动表格 View 时,顶 View 可以很好地保持在最小高度。

但是如果您向上滚动 - 因此顶 View 处于最小位置 - 那么单元格数量就会减少,顶 View 会回落到最大高度。

这是因为 tableview 的实际内容大小已降至其边界高度以下,因此作为 ScrollView ,它会再次将内容的顶部带到 ScrollView 的顶部(当然还要加上 50 点顶部插图)。

<小时/>

我希望能够向上滚动表格 View ,以便顶 View 保持在其最小高度,无论它包含多少单元格 - 即无论它的内容大小。

有人能想出一种巧妙的方法来设置表格 View 上的最小内容大小吗?

(到目前为止,我已经尝试过修改页脚,在底部有一个单元格,本质上是一个间隔符 - 这会弄乱表格 View 的逻辑和我在那里的一些重新排序代码。我尝试过强制报价等符合我的意愿,但还没有完全弄清楚如何实现这一点。)

我非常感谢一些 UI 天才为我指明正确的方向:) 谢谢。

更新:

感谢您的所有回答和评论。

在尝试了各种类型的页脚和页眉 View 、调整滚动的约束和布局优先级、添加间隔单元格、将表格 View 放入 ScrollView 等之后 - 我终于意识到我让这比我需要的更复杂,并且应该只更新scrollViewDidScroll上的问题原因,即contentInset值。

请参阅下面的答案,了解实现我正在寻找的行为的代码示例。

最佳答案

由于 contentInset 是导致 tableview ping 回到错误点的原因,因此我只需要在 tableview 向上/向下滚动时调整内容插入即可。

这是我所做的一些示例代码:

let maxPointsTopViewCanMoveUp: CGFloat = 50

let topInset = abs(min(max(-maxPointsTopViewCanMoveUp, scrollView.contentOffset.y), 0))
scrollView.contentInset = UIEdgeInsets(top: topInset, left: 0, bottom: 0, right: 0)
scrollView.scrollIndicatorInsets = UIEdgeInsets(top: topInset, left: 0, bottom: 0, right: 0)

let amountToMoveTopViewUp = maxPointsTopViewCanMoveUp - topInset
topViewToSuperviewTopConstraint.constant = amountToMoveTopViewUp

这是从 tableview 的 scrollViewDidScroll 调用的。

这意味着当表格 View 中的单元格太少而无法填充内容时,表格 View 的顶部会停留在它滚动到的位置(即它向上推顶 View 的量)。

关于ios - 在 UITableView 上设置最小内容大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47501901/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com