我有水平流动的集合视图,细胞高度为高度和宽度屏幕/ 4
所以我想添加类似动画过渡的东西,所以当你试图用两根手指扩展单元格时,这个单元格会扩展它的宽度,直到手指到达设备的两侧,并且当手指移动时,其他一些东西也会生动。
那么我如何跟踪手指moove在我的vc中使用集合视图调用func并操作组件和单元格的大小。同样在cv中扩展一个特定的单元格宽度,以便其他单元格移开对我来说是一个小技巧。
感谢您的帮助))
答案 0 :(得分:1)
您可以使用UIPinchGestureRecognizer使用两根手指来处理缩放。通过读取视图的缩放比例值,您可以更改单元格的高度和宽度,然后重新加载单元格。
UIPinchGestureRecognizer *pinchGestureRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(handlePinchWithGestureRecognizer:)];
[cell addGestureRecognizer:pinchGestureRecognizer];
夫特:
var pinchGestureRecognizer: UIPinchGestureRecognizer = UIPinchGestureRecognizer(target: self, action: Selector("handlePinchWithGestureRecognizer:"))
cell.addGestureRecognizer(pinchGestureRecognizer)
阅读缩放比例值并在此处编写转换内容:
-(void)handlePinchWithGestureRecognizer:(UIPinchGestureRecognizer *)pinchGestureRecognizer{
self.cell.transform = CGAffineTransformScale(self.testView.transform, pinchGestureRecognizer.scale, pinchGestureRecognizer.scale);
}
夫特:
func handlePinchWithGestureRecognizer(sender: UIPinchGestureRecognizer)
{
sender.view!.transform = CGAffineTransformScale(sender.view!.transform,
sender.scale, sender.scale)
}
答案 1 :(得分:0)
我本来希望将此作为评论添加,但我需要获得50点声望才能做到这一点,所以请谨慎下来:P
您需要使用UIViewControllerAnimatedTransitioning
,UIViewControllerTransitioningDelegate
和UIPercentDrivenInteractiveTransition
。
你做了一个动画转换,它使用了相对于ViewController的UICollectionViewCell框架,因此你必须使用与ViewController.view相关的convertRect方法
动画过渡应该添加NewViewController的屏幕截图,并将convertRect方法的结果作为其起始帧。然后动画将从NewViewController的起始帧到最后一帧。
测试动画并检查它是否具有所需的结果。然后实施
UIPercentDrivenInteractiveTransition
并将其绑定到UIPinchGestureRecognizer
。我建议将捏合手势添加到每个单元格,然后为单元格创建委托,并将UIPercentDrivenInteractiveTransition
设置为实现函数func userDidUsePinchGesture(gesture: UIPinchGestureRecognizer)
的委托。在该功能中,您可以计算完成转换的百分比。
如果这段文字有点令人生畏,我很抱歉,我希望这能帮到你。如果您在我建议您查看本教程Creating Custom UIViewController Transitions
之前尚未实施UIViewControllerAnimatedTransitioning
,UIViewControllerTransitioningDelegate
和UIPercentDrivenInteractiveTransition