UIScrollView 可滚动区域未随 scrollView 框架约束更新而更新
Posted
技术标签:
【中文标题】UIScrollView 可滚动区域未随 scrollView 框架约束更新而更新【英文标题】:UIScrollView scrollable area not updating with scrollView frame constraint update 【发布时间】:2017-12-12 17:34:05 【问题描述】:我正在更新框架约束
scrollView.top Equal container.top
通过从常量中减去,然后调用 layoutIfNeeded()
滚动视图的框架更新正常,内容也随之而来,但在滚动视图获得的新区域(滚动视图上方)中,它在拖动时不会触发滚动事件。旧区有效。
我已经尝试更新 contentOffset,但这实际上是在滚动视图内向上滚动内容,而不是扩展可滚动区域
我正在更新 contentSize,但问题似乎是 contentSize 从哪里开始
我已经尝试更新 contentInset,它仍然只是移动内容而不更新可滚动区域
也许有一个属性需要更新但我找不到它
这里的最终目标是以编程方式增加滚动视图的大小
这里是scrollViewDidScroll,我正在更新约束
func scrollViewDidScroll(_ scrollView: UIScrollView)
let newVal:CGFloat = -120.0
DispatchQueue.main.async [unowned self] in
self.feedTableViewTopConstraint.constant = newVal
self.view.layoutIfNeeded()
【问题讨论】:
【参考方案1】:你应该打电话
setNeedsLayout()
如果您希望 layoutIfNeeded() 在同一个循环中发生,那么您可以在调用 setNeedsLayout() 后立即调用它
【讨论】:
以上是关于UIScrollView 可滚动区域未随 scrollView 框架约束更新而更新的主要内容,如果未能解决你的问题,请参考以下文章
使用 NavigationBar 禁用 UIScrollView 垂直滚动
以编程方式在 UITableViewCell 内创建 UIScrollView - ScrollView 不滚动
UICollectionViewCell 内的 UIScrollView 滚动区域