模仿照片应用程序的平移行为(速度)
Posted
技术标签:
【中文标题】模仿照片应用程序的平移行为(速度)【英文标题】:Mimic Panning Behavior (velocity) of Photos App 【发布时间】:2013-01-11 12:33:46 【问题描述】:我正在尝试模仿照片应用程序的行为,其中用户用手指平移照片并且它具有一定的速度。由于我不会进入的原因,我不能使用带有缩放功能的UIScrollView
UIImageView
,而是必须实现带有UIPanGestureRecognizer
的UIImageView
。苹果是否有任何关于如何做到这一点的样本,或者有人知道如何模仿这种行为吗?有关于这方面的 WWDC 视频吗? (找不到)。
【问题讨论】:
【参考方案1】:如果您愿意集成任何其他第三方现成控件,我建议您查看KTPhotoBrowser 演示。
太棒了。一切都以编程方式完成,但您可以根据需要进行更改。
【讨论】:
【参考方案2】:实现UIPinchGestureRecognizer
并将以下函数作为选择器挂钩。
-(void)scale:(id)sender
if([(UIPinchGestureRecognizer*)sender state] == UIGestureRecognizerStateEnded)
lastScale = 1.0;
CGSize zoomViewSize = CGSizeApplyAffineTransform(imgScrollView.frame.size, [(UIPinchGestureRecognizer *)sender view].transform);
CGPoint centerPoint = CGPointApplyAffineTransform(imgScrollView.frame.origin, [(UIPinchGestureRecognizer *)sender view].transform);
CGRect r = imgScrollView.bounds;
CGSize scrollViewSize = imgScrollView.frame.size;
imgScrollView.contentSize = zoomViewSize;
imgScrollView.contentOffset = centerPoint;
CGFloat currentScale = [[[(UIPinchGestureRecognizer*)sender view].layer valueForKeyPath:@"transform.scale"] floatValue];
CGFloat scale = 1.0 - (lastScale - [(UIPinchGestureRecognizer*)sender scale]);
scale = MIN(scale, imgScrollView.maximumZoomScale / currentScale);
scale = MAX(scale, imgScrollView.minimumZoomScale / currentScale);
CGAffineTransform currentTransform = [(UIPinchGestureRecognizer*)sender view].transform;
CGAffineTransform newTransform = CGAffineTransformScale(currentTransform, scale, scale);
[[(UIPinchGestureRecognizer*)sender view] setTransform:newTransform];
lastScale = [(UIPinchGestureRecognizer*)sender scale];
【讨论】:
谢谢,相信这是为了扩展。您是否偶然知道如何进行平移?以上是关于模仿照片应用程序的平移行为(速度)的主要内容,如果未能解决你的问题,请参考以下文章