Ios 如何降低收缩变焦图像识别器的速度
我创建了一个Ios 如何降低收缩变焦图像识别器的速度,ios,objective-c,uipinchgesturerecognizer,Ios,Objective C,Uipinchgesturerecognizer,我创建了一个UIgestureRecognitor,很像: 这就像预期的一样,但是我的客户希望它对触摸不那么敏感。如何降低挤压的速度(向内和向外),使其以默认速度的80%左右缩放?您是否尝试将当前值缩放到80% if ([gestureRecognizer state] == UIGestureRecognizerStateBegan || [gestureRecognizer state] == UIGestureRecognizerStateChanged) {
UIgestureRecognitor
,很像:
这就像预期的一样,但是我的客户希望它对触摸不那么敏感。如何降低挤压的速度(向内和向外),使其以默认速度的80%左右缩放?您是否尝试将当前值缩放到80%
if ([gestureRecognizer state] == UIGestureRecognizerStateBegan ||
[gestureRecognizer state] == UIGestureRecognizerStateChanged) {
CGFloat maxScale = 2.0;
CGFloat currentScale = [gestureRecognizer scale];
currentScale = 0.8 * currentScale; //80% of scaling
if(currentScale < 0.8)
currentScale = 0.8;
if(currentScale > maxScale)
currentScale = maxScale;
[gestureRecognizer view].transform = CGAffineTransformScale([[gestureRecognizer view] transform], currentScale, currentScale);
}
if([gestureRecognizer state]==UIGestureRecognizerState开始||
[gestureRecognizer状态]==UIGestureRecognizerStateChanged){
CGFloat maxScale=2.0;
CGFloat currentScale=[GestureRecognitor scale];
currentScale=0.8*currentScale;//缩放的80%
如果(电流标度<0.8)
电流标度=0.8;
如果(currentScale>maxScale)
currentScale=maxScale;
[GestureRecognitor视图].transform=CGAffineTransformScale([GestureRecognitor视图]transform],currentScale,currentScale);
}
试试这个
- (void)handlePinching:(UIPinchGestureRecognizer *)gestureRecognizer {
if([gestureRecognizer state] == UIGestureRecognizerStateBegan) {
if (CGRectIsEmpty(self.initalFrame)) {
self.initalFrame = gestureRecognizer.view.frame;
// store view's original frame and never change it
}
if (self.preScale == 0.f) {
self.preScale = 1.f;
}
gestureRecognizer.scale = self.preScale;
// gestureRecognizer and view should share the same scale state at the beginning
}
if ([gestureRecognizer state] == UIGestureRecognizerStateBegan ||
[gestureRecognizer state] == UIGestureRecognizerStateChanged) {
const CGFloat kMaxScale = 2.0;
const CGFloat kMinScale = 1.0;
CGFloat newScale = gestureRecognizer.scale;
newScale = (newScale - self.preScale) * 0.8 + self.preScale;
newScale = MIN(newScale, kMaxScale);
newScale = MAX(newScale, kMinScale);
CGRect newFrame = self.initalFrame;
newFrame.size.height *= newScale;
newFrame.size.width *= newScale;
gestureRecognizer.view.frame = newFrame;
self.preScale = newScale;
}
}
要点是
- 使用框架实现缩放
- 将比例变量更改为慢速/快速缩放
- (void)handlePinchGesture:(UIPinchGestureRecognizer *)gestureRecognizer {
...
lastScale = [gestureRecognizer scale]; // Store the previous scale factor for the next pinch gesture call
gestureRecognizer.scale = 1;
// ^ added this line
}
}
您是否尝试手动设置
滚动视图
的缩放比例
?@NicolasBonnet不幸的是,这个特定的缩放比例没有包装在滚动视图中,因此不可行:|我相信这也可以,但为什么要裁剪缩放比例值,我不认为有必要这样做。裁剪比例值是因为它会限制你的缩放属性。好吧,很抱歉,我看到我快速阅读了原始代码并错过了这一部分。不,这根本不起作用-有一些非常奇怪的反作用:|尝试了很多次,但似乎没有任何效果。哦,是的,没有在我的代码中添加那一行,这是我的错误。@HimanshuJoshi hrm。现在你让我想了想——也许你的建议终究会对这句台词起作用。我要试试看。
- (void)handlePinchGesture:(UIPinchGestureRecognizer *)gestureRecognizer {
...
lastScale = [gestureRecognizer scale]; // Store the previous scale factor for the next pinch gesture call
gestureRecognizer.scale = 1;
// ^ added this line
}
}