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 滚动区域

UIScrollView 不从里面的对象滚动

在 UIScrollview 上缩放图像后,它会滚动到图像区域之外

UIScrollView的使用