gpt4 book ai didi

ios - CGAffineTransform 旋转并根据 slider 值调整大小

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:03:14 27 4
gpt4 key购买 nike

我正在使用 SliderResizeRotate-

对于旋转-

 CGAffineTransform transform = editingView.transform;
transform = CGAffineTransformMakeRotation(sliderVal * 2*M_PI / 30);
editingView.transform = transform;

对于调整大小-

CGAffineTransform t = CGAffineTransformMakeScale(sliderVal/30, sliderVal/30);
CGPoint center = editingView.center;
[UIView animateWithDuration:0.5
animations:^{
editingView.transform = t;
editingView.center = center;
}
completion:^(BOOL finished) {

}];

使用上面的代码,两者都可以单独工作。

但我必须调整旋转 View ,或者旋转调整大小的 View 。

我看到许多建议来自不同的行为,因为我正在使用 CGAffineTransformMakeRotationCGAffineTransformMakeScale,如果我使用 CGAffineTransformScaleCGAffineTransformRotation 那么我的问题就解决了

问题是当我使用 CGAffineTransform 时缩放不正确,View 从屏幕上消失。

最佳答案

您正在使用 editingView.transform 行设置 View 的转换矩阵。

你应该改变你的旋转代码:

CGAffineTransform transform = editingView.transform;
transform = CGAffineTransformMakeRotation(sliderVal * 2*M_PI / 30);
editingView.transform = CGAffineTransformConcat(editingView.transform, transform);

和调整大小:

CGAffineTransform t = CGAffineTransformMakeScale(sliderVal/30, sliderVal/30);
CGPoint center = editingView.center;
[UIView animateWithDuration:0.5
animations:^{
editingView.transform = CGAffineTransformConcat(editingView.transform,t);
editingView.center = center;
}
completion:^(BOOL finished) {

}];

使用 CGAffineTransformConcat,您可以将 2 个变换矩阵加在一起,这样您就不会丢失旧的变换。您可以使用 CGAffineTransformIdentity 来重置转换。

关于ios - CGAffineTransform 旋转并根据 slider 值调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16101441/

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