【发布时间】:2019-06-11 23:04:02
【问题描述】:
我正在开发的应用程序需要与 iPad 上的照片应用程序非常相似的布局。有一个UIViews 的网格,用户应该能够捏合到一个网格中,当他们捏合时,观察该视图的大小直到全屏。
到目前为止,我已经设置了一个UICollectionViewController 和一个自定义集合视图单元格。我将捏合手势识别器添加到自定义单元格中。当用户捏合时,单元格会变大。
我现在遇到的问题是,当它扩展时,单元格并没有在所有其他单元格之上分层。相反,它隐藏在它之后加载的单元格之下。
我在想解决方案可能是当集合视图控制器识别出捏合手势时,它可以隐藏被捏合的单元格。然后,创建一个新的UIView,它是集合视图单元格的副本,其边界与放置单元格的位置相同。然后,该视图可以是可以捏合、旋转和平移的视图。一旦用户结束手势,视图就会动画回到原来的单元格位置,然后设置为nil。
但是,我不确定这是否是最佳解决方案,也许有一些简单的方法可以确保某个单元格位于集合视图中的所有其他单元格之上。
下面显示了我当前实现如何缩放单元格的 sn-p 代码。这是导致单元格在扩展时隐藏在后面的单元格下的问题。
@objc func scalePiece(_ gestureRecognizer : UIPinchGestureRecognizer) {
guard gestureRecognizer.view != nil else { return
if gestureRecognizer.state == .began ||
gestureRecognizer.state == .changed {
gestureRecognizer.view?.transform = (gestureRecognizer.view?.transform.scaledBy(x: gestureRecognizer.scale, y: gestureRecognizer.scale))!
gestureRecognizer.scale = 1.0
}
}
【问题讨论】:
-
我也对这些情况使用复制视图方法。尽管需要更多的努力(定位、复制单元格的外观),但它在实现方面更简洁,您不会弄乱实际的单元格和集合视图,而且如果添加,您不必处理层收到手势时它。
-
试过
bringSubviewToFront(_:)?需要引用集合视图本身...不完全确定完整的含义是什么。 -
也许使用 Z 索引?
-
bringSubviewToFront 完成了这项工作!谢谢乔希!
-
这不是真正的问题,对吧?您的问题更多的是关于最佳实践。
标签: ios cocoa-touch uicollectionview