繁体   English   中英

如何快速更改集合视图的高度

[英]How to change the height of the collection view in swift

我有一个集合视图和一个ui视图上的文本字段。 最初,我在ui视图的顶部有一个文本字段,然后将集合视图的顶部Anchor约束设置为文本字段的底部。

我想实现一种行为,如果我向下滚动集合视图,则文本字段应消失,并且集合视图的顶部应位于同一ui视图的顶部(这将隐藏文本字段)。 当我向上滚动时,我希望约束像初始约束一样(容器视图的顶部Anchor应该设置为文本字段的底部)。 关于如何实现此行为的任何提示? 我希望通过向上和向下滚动时更新约束来实现这一点。 我该如何实施?

UICollectionView UIScrollView子类,因此您可以实现UIScrollViewDelegate来获取滚动事件。

这是我在其中一个应用中使用的一些代码

  • 文本字段的底部被限制在集合视图的顶部
  • 文本字段的顶部受视图顶部布局指南的约束-这是由滚动视图委托代码修改的约束
  • 当集合视图向上滚动时,文本字段将向上移动并逐渐消失

extension ViewController: UIScrollViewDelegate {
    func scrollViewDidScroll(_ scrollView: UIScrollView) {

        let textHeight = self.textField.frame.size.height + 2
        let offset = min(scrollView.contentOffset.y, textHeight)

        if offset >= 0 || self.textFieldConstraint.constant != 0 {
            self.textFieldConstraint.constant = -offset
            let percent = max(1 - offset/textHeight,0)
            self.textField.alpha = percent
        }
    }
}

本质上,您将文本字段“推”到屏幕顶部,不超过其高度+2

我认为该解决方案可以为您带来完全的效果,只需添加一个UIScrollView视图作为父级,然后将文本字段和集合视图置于滚动视图中,即可设置约束。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM