【发布时间】:2014-04-07 03:31:16
【问题描述】:
我创建了一个UIGestureRecognizer,很像 this one:
- (void)handlePinchGesture:(UIPinchGestureRecognizer *)gestureRecognizer {
if([gestureRecognizer state] == UIGestureRecognizerStateBegan) {
// Reset the last scale, necessary if there are multiple objects with different scales
lastScale = [gestureRecognizer scale];
}
if ([gestureRecognizer state] == UIGestureRecognizerStateBegan ||
[gestureRecognizer state] == UIGestureRecognizerStateChanged) {
CGFloat currentScale = [[[gestureRecognizer view].layer valueForKeyPath:@"transform.scale"] floatValue];
// Constants to adjust the max/min values of zoom
const CGFloat kMaxScale = 2.0;
const CGFloat kMinScale = 1.0;
CGFloat newScale = 1 - (lastScale - [gestureRecognizer scale]);
newScale = MIN(newScale, kMaxScale / currentScale);
newScale = MAX(newScale, kMinScale / currentScale);
CGAffineTransform transform = CGAffineTransformScale([[gestureRecognizer view] transform], newScale, newScale);
[gestureRecognizer view].transform = transform;
lastScale = [gestureRecognizer scale]; // Store the previous scale factor for the next pinch gesture call
}
}
这可以按预期工作,但是我的客户希望它对触摸不敏感。如何降低捏合的速度(向内和向外),使其以默认速度的 80% 左右缩放?
【问题讨论】:
-
您是否尝试手动设置您的
scrollView的zoomScale? -
@NicolasBonnet 不幸的是,这个特定的没有包裹在滚动视图中,所以这样做是不可行的:|
标签: ios objective-c uipinchgesturerecognizer