gpt4 book ai didi

ios - 将 PinchRecognizer Objective-C 代码转换为 Swift

转载 作者:行者123 更新时间:2023-11-29 02:06:02 25 4
gpt4 key购买 nike

我正在尝试将 Objective-C 代码转换为 Swift,有人可以帮忙吗?我被困在一条线上。

objective-C

-(void)pinchDetected:(UIPinchGestureRecognizer *)pinchRecognizer

{
if([pinchRecognizer state] == UIGestureRecognizerStateBegan) {
// Reset the last scale, necessary if there are multiple objects with different scales
lastScale = [pinchRecognizer scale];
}

if ([pinchRecognizer state] == UIGestureRecognizerStateBegan ||[pinchRecognizer state] == UIGestureRecognizerStateChanged)
{
###I NEED TO CONVERT THIS LINE
CGFloat currentScale = [[[pinchRecognizer view].layer valueForKeyPath:@"transform.scale"] floatValue];

const CGFloat maxScale = 1.5;
const CGFloat minScale = 1.0;

CGFloat newScale = 1 - (lastScale - [pinchRecognizer scale]);
newScale = MIN(newScale, maxScale / currentScale);
newScale = MAX(newScale, minScale / currentScale);
thePageViewController.view.transform = CGAffineTransformScale(thePageViewController.view.transform, newScale, newScale);
lastScale = [pinchRecognizer scale]; // Store the previous scale factor for the next pinch gesture call
}
}

swift

func pinchDetected(pinchRecognizer: UIPinchGestureRecognizer) {

var lastScale = pinchRecognizer.scale

if(pinchRecognizer.state == UIGestureRecognizerState.Began) {
// Reset the last scale, necessary if there are multiple objects with different scales
lastScale = pinchRecognizer.scale
}

if (pinchRecognizer.state == UIGestureRecognizerState.Began || pinchRecognizer.state == UIGestureRecognizerState.Changed)
{

###HOW DO I CONVERT THIS LINE TO SWIFT?
var currentScale: CGFloat = [[[pinchRecognizer.view].layer valueForKeyPath:@"transform.scale"] floatValue];

let maxScale: CGFloat = 1.5;
let minScale: CGFloat = 1.0;

var newScale: CGFloat = 1 - (lastScale - pinchRecognizer.scale)
newScale = min(newScale, maxScale / currentScale);
newScale = max(newScale, minScale / currentScale);
self.view.transform = CGAffineTransformScale(self.view.transform, newScale, newScale);
lastScale = pinchRecognizer.scale // Store the previous scale factor for the next pinch gesture call
}

}

最佳答案

你说的要转换的Line可以这样做。这对我有用。

var curScale = pinchRecognizer.view!.layer.valueForKeyPath("transform.scale")!.floatValue

关于ios - 将 PinchRecognizer Objective-C 代码转换为 Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29787541/

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