gpt4 book ai didi

ios - 如何降低捏缩放 UIGestureRecognizer 的速度

转载 作者:可可西里 更新时间:2023-11-01 06:15:16 26 4
gpt4 key购买 nike

我已经创建了一个 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% 左右缩放?

最佳答案

您是否尝试将当前值缩放到 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);

}

关于ios - 如何降低捏缩放 UIGestureRecognizer 的速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22191582/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com