我对iOS很新,我正在试图弄清楚如何使用Pinch手势来缩放惯性和开销(我不知道在这种情况下单词开销是否正确,在德语中它将被称为“ Überschwingen“)。
基本上应该做什么:它应该有一个最大和最小刻度(在我的情况下为1.0到4.0),你可以在其中进行缩放。当手势完成时,它应该采用给定的速度并制作曲线动画,同时允许视图上下给定的刻度,然后像张力一样回到最小值或最大值。
我为此运行了Gesture Recognizer,并设法让它使用我的最小和最大比例(使用stackoverflow中的示例)。这是我到目前为止所得到的:
- (void)handle_pinch:(UIPinchGestureRecognizer *)recognizer
{
if([recognizer state] == UIGestureRecognizerStateBegan) {
previousScale = 1.0;
lastPoint = [recognizer locationInView:[recognizer view]];
}
if ([recognizer state] == UIGestureRecognizerStateChanged) {
CGFloat currentScale = [[[recognizer view].layer valueForKeyPath:@"transform.scale"] floatValue];
// Constants to adjust the max/min values of zoom
const CGFloat kMaxScale = 4.0;
const CGFloat kMinScale = 1.0;
CGFloat newScale = 1 - (previousScale - [recognizer scale]); // new scale is in the range (0-1)
newScale = MIN(newScale, kMaxScale / currentScale);
newScale = MAX(newScale, kMinScale / currentScale);
scale = newScale;
CGAffineTransform transform = CGAffineTransformScale([[recognizer view] transform], newScale, newScale);
[recognizer view].transform = transform;
CGPoint point = [recognizer locationInView:[recognizer view]];
CGAffineTransform transformTranslate = CGAffineTransformTranslate([[recognizer view] transform], point.x-lastPoint.x, point.y-lastPoint.y);
[recognizer view].transform = transformTranslate;
NSLog(@"Transformed");
}
}
但我现在知道如何在这里添加动画。谢谢你的帮助!
答案 0 :(得分:0)
您应该使用UIScrollView来实现缩放缩放效果,因为UIScrollView已经与动画集成在一起。只需在UIScrollView中添加您的UIView。
这是关于UIScrollView的精彩教程。他正在使用UIImageView,但UIView将以类似的方式运行。