gpt4 book ai didi

swift - UICollectionView 弹性标题

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

大家好,我有一个带有标题的 Collection View ,当我拉下任何想法时,我希望它成为一个弹性标题,如何做到这一点?

最佳答案

当您上下滚动 UICollectionView 时,内容偏移量发生变化时您会收到通知。例如使用 scrollViewDidScroll

如果内容偏移量 < 0,只需更改 header subview 顶部约束,使其看起来 header 的顶部粘在 UICollectionView 的顶部。

final class Header: UICollectionReusableView {

lazy var subview = UIView()
lazy var constraint: NSLayoutConstraint = NSLayoutConstraint(item: self.subview, attribute: .top, relatedBy: .equal, toItem: self, attribute: .top, multiplier: 1.0, constant: 0.0)

override init(frame: CGRect) {
super.init(frame: frame)
addSubview(subview)
subview.backgroundColor = UIColor.orange
subview.translatesAutoresizingMaskIntoConstraints = false
var constraints: [NSLayoutConstraint] = []
constraints.append(contentsOf: NSLayoutConstraint.constraints(withVisualFormat: "V:[S]|", options: [], metrics: nil, views: ["S":subview]))
constraints.append(contentsOf: NSLayoutConstraint.constraints(withVisualFormat: "H:|[S]|", options: [], metrics: nil, views: ["S":subview]))
constraints.append(constraint)
NSLayoutConstraint.activate(constraints)
}

required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}

func changed(offset: CGPoint) {
let constant = offset.y > 0 ? 0 : offset.y
if constant != constraint.constant {
constraint.constant = constant
}
self.setNeedsLayout()
}
}

我已经在 Playground 上测试过它,但没有在实际项目中测试过。让我知道它是否适合您。

关于swift - UICollectionView 弹性标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43674255/

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