【发布时间】:2016-11-26 22:50:01
【问题描述】:
我正在尝试编写一个可扩展的 UICollectionViewCell。 如果用户按下顶部按钮,单元格应展开到不同的高度并显示底层内容。
我的第一个实现有一个自定义 UICollectionViewCell,可以通过点击顶部按钮展开,但 collectionview 也不会展开。自动取款机。该单元格是集合视图中的最后一个单元格,只需向下滑动足够多的时间,您就可以看到展开的内容。如果您停止触摸,则滚动视图会向上跳跃,并且无法看到展开的单元格。
这是我的代码:
import Foundation
import UIKit
class ExpandableCell: UICollectionViewCell {
@IBOutlet weak var topButton: IconButton!
public var expanded : Bool = false
private var expandedHeight : CGFloat = 200
private var notExpandedHeight : CGFloat = 50
@IBAction func topButtonTouched(_ sender: AnyObject) {
if (expanded == true) {
self.deExpand()
} else {
self.expand()
}
}
public func expand() {
UIView.animate(withDuration: 0.8, delay: 0.0, usingSpringWithDamping: 0.9, initialSpringVelocity: 0.9, options: UIViewAnimationOptions.curveEaseInOut, animations: {
self.frame = CGRect(x: self.frame.origin.x, y: self.frame.origin.y, width: self.frame.size.width, height: self.expandedHeight)
}, completion: { success in
self.expanded = true
})
}
public func deExpand() {
UIView.animate(withDuration: 0.8, delay: 0.0, usingSpringWithDamping: 0.9, initialSpringVelocity: 0.9, options: UIViewAnimationOptions.curveEaseInOut, animations: {
self.frame = CGRect(x: self.frame.origin.x, y: self.frame.origin.y, width: self.frame.size.width, height: self.notExpandedHeight)
}, completion: { success in
self.expanded = false
})
}
}
我也无法正确实现以下方法,因为我没有直接引用单元格:
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize
基本上所有东西都应该是动画的。
屏幕截图显示了一个展开而不是展开的单元格。希望对您有所帮助!
谢谢!
【问题讨论】:
-
不知何故,APLExpandableCollectionView 可能有用...
标签: ios swift uicollectionview uicollectionviewcell