UICollectionViewCell 在帧更新时不会改变
Posted
技术标签:
【中文标题】UICollectionViewCell 在帧更新时不会改变【英文标题】:UICollectionViewCell doesn't change on frame update 【发布时间】:2014-07-11 13:41:55 【问题描述】:我正在尝试使用UIPanGestureRecognizer
制作自定义可滑动UICollectionViewCell
。这是我的代码:
在自定义UICollectionViewCell
:
func setup()
attributes = delegate.attributesForCell(self)
selectionView = UIView(frame: attributes.frame)
self.addSubview(selectionView)
let cellPan = UIPanGestureRecognizer(target: self, action: "cellDidPan:")
selectionView.addGestureRecognizer(cellPan)
func cellDidPan(gesture: UIPanGestureRecognizer)
switch gesture.state
case .Began:
originalFrame = attributes.frame
case .Changed:
let translation: CGPoint = gesture.translationInView(selectionView)
attributes.frame = CGRect(origin: CGPoint(x: originalFrame.origin.x + translation.x, y: originalFrame.origin.y), size: originalFrame.size)
println("t \(translation.x)")
println("c \(attributes.center)")
println("f \(attributes.frame)")
case .Ended:
println("nothing here yet")
default:
println("Unrecognized gesture state")
在UICollectionViewController
(单元格的代表)中:
func attributesForCell(cell: SwipeableCollectionViewCell) -> UICollectionViewLayoutAttributes
let indexPath = collectionView.indexPathForCell(cell)
return collectionView.layoutAttributesForItemAtIndexPath(indexPath)
当我在UICollectionViewCell
上滑动时,框架会记录正确的更改(除了 x 坐标,它向左滑动变小,向右滑动变大),但单元格只是停留在同一个地方。
我正在使用UICollectionViewFlowLayout
,并在故事板和界面生成器中设置所有内容。
【问题讨论】:
如果您找到了问题的答案,请将其写下来作为答案,提供详细的信息,以便其他人将来遇到同样的问题时有所帮助。 【参考方案1】:我找到了答案! layoutAttributesForItemAtIndexPath() 返回属性的副本,而不是实际的属性对象。这意味着修改这些属性显然不会做任何事情。相反,请使用 UICollectionViewCell 属性。
【讨论】:
以上是关于UICollectionViewCell 在帧更新时不会改变的主要内容,如果未能解决你的问题,请参考以下文章
UICollectionViewCell 中的标签文本未更新
在 UICollectionViewCell 中更新 UITableView
NSOperationQueue mainQueue 不更新 UICollectionViewCell
UICollectionViewCell 在代码中调整布局后更新约束