gpt4 book ai didi

ios - 应用 CGAffineTransformRotate 后更新框架的原点

转载 作者:行者123 更新时间:2023-11-29 10:39:23 24 4
gpt4 key购买 nike

我有 x 和 y 坐标,以及我需要放置在其原始位置的 UIImageView 的旋转。坐标对应于 View 旋转后的坐标。

我发现的问题是,如果我用给定的 x 和 y 初始化 View ,然后执行旋转,最终位置不正确,因为应用转换的顺序不正确:

float x, y, w, h; // These values are given 

UIImageView *imageView = [[UIImageView alloc] init];

// Apply transformations
imageView.frame = CGRectMake(x, y, w, h);
imageView.transform = CGAffineTransformRotate(imageView.transform, a.rotation);

如果我尝试在 View 旋转后使用 x 和 y 来平移 View ,那么最终的 x 和 y 是完全错误的:

float x, y, w, h; // These values are given 

UIImageView *imageView = [[UIImageView alloc] init];
imageView.frame = CGRectMake(0, 0, w, h);

// Apply transformations
imageView.transform = CGAffineTransformTranslate(imageView.transform, x, y);
imageView.transform = CGAffineTransformRotate(imageView.transform, a.rotation);

我也尝试过在应用旋转后更新 View 的中心,但结果也不正确。

我正在寻找一些关于如何处理这个问题的建议或技巧,以达到我需要的结果。

提前致谢!

最佳答案

我正在使用这个 C 函数围绕中心进行旋转变换:

static inline CGAffineTransform CGAffineTransformMakeRotationAroundCenter(double width, double height, double rad) {
CGAffineTransform t = CGAffineTransformMakeTranslation(height/2, width/2);
t = CGAffineTransformRotate(t, rad);
t = CGAffineTransformTranslate(t, -width/2, -height/2);

return t;
}

您需要以弧度为单位指定宽度、高度和角度。

这能解决您的问题吗?

关于ios - 应用 CGAffineTransformRotate 后更新框架的原点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25248536/

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