P. *_* B. 5 cocoa-touch ios uicollectionview
我正在使用的应用程序需要的布局与iPad上“照片”应用程序的布局非常相似。有一个UIViews 网格,用户应该可以捏成一个网格,并且在他们捏捏时,观看该视图的大小会不断扩大,直到全屏显示为止。
到目前为止,我已经建立了一个UICollectionViewController和一个自定义集合视图单元。我将捏手势识别器添加到自定义单元格。当用户捏合时,单元的大小会增大。
我现在遇到的问题是,随着单元的扩展,它不在所有其他单元的顶部。相反,它隐藏在加载后的单元格下面。
我当时在想解决方案可能是当集合视图控制器识别出捏手势时,它可能会隐藏被捏的单元格。然后,创建一个新UIView的副本,它是集合视图单元格的副本,其边界等于该单元格的放置位置。然后,该视图可以是可以被捏,旋转和平移的视图。用户结束手势后,视图将立即动画回到原始单元格位置,然后设置为nil。
但是,我不确定这是否是最佳解决方案,也许有一些简单的方法可以确保某个单元格位于集合视图中所有其他单元格的顶部。
下面显示了我如何缩放单元的当前实现的一小段代码。这是一个导致其扩展时在后面的单元格下面隐藏单元格的问题。
@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
}
}
Run Code Online (Sandbox Code Playgroud)
补救单元格落后于其他单元格的一种非常简单的可能性是调用bringSubviewToFront(_:)集合视图,传递单元格。
但是,请注意,我不确定这是否是最佳的:因为您并不真正拥有单元格/集合视图的层次结构,所以一般来说您不应该像这样直接触摸子视图。
一个密切相关的可能性 - 不是那么简单,但可能更强大,因此更可取 - 是自定义布局。由于集合视图的UICollectionViewLayout对象可以指定zIndex特定单元格的,因此您可以在捏合手势开始时重新加载该单元格并仅更新该单元格的 Z 索引。
| 归档时间: |
|
| 查看次数: |
137 次 |
| 最近记录: |