gpt4 book ai didi

iphone - CGAffineTransform重置

转载 作者:行者123 更新时间:2023-12-03 18:13:26 27 4
gpt4 key购买 nike

3我有一个可以通过触摸操作的图像。

假设它是一个向上的箭头图像。旋转 180 度后,箭头现在指向下,我想重置 CGAffineTransform 属性,以便它认为现在已转回 0 度。

我想要这个,因为无论图像的角度是 0 还是 180,我都必须进行平移、旋转、缩放等操作。

提前致谢。

已编辑 5 条回复:

嗯,我不确定这些答案是否符合我的要求。我很抱歉没有说清楚。

  1. 触摸箭头向上的图像并向右移动 - 一切正常。
  2. 图像随旋转手势旋转并旋转 180 度 - 一切都很好
  3. 图像现在被触摸并向右移动 - 由于坐标是颠倒的,现在图像上下跳跃,使我的其他动画序列变得困惑。

为了防止上述问题和其他一些问题,我想在旋转 180 度后重置所有内容。例如,一旦图像旋转 180 度,CGAffineTransform 属性就知道它旋转了 180%。我想重置当时的 poperties,以便 CGAffineTransform 认为它转动了 0 度而不是 180 度,尽管图像在视觉上是颠倒的。我希望在旋转到 180 度时,在没有任何视觉变化的情况下发生这种情况。

希望这更清楚......

最佳答案

如果您尝试重置变换,以使图像像原来一样显示,您只需将变换设置回恒等即可。

self.imageView.transform = CGAffineTransformIdentity

如果您想对变换后的图像应用任意变换,最简单的方法是使用接受现有变换的 CGAffineTransform 方法。只需发送现有的转换即可。例如:

CGAffineTransform scale = CGAffineTransformMakeScale(zoom, 1);
self.imageView.transform = CGAffineTransformConcat(self.imageView.transform, scale);

如果您确实需要完全不进行任何转换的图像,则必须将其绘制回另一个图像。这也不是那么难,但我不推荐它作为您的第一个解决方案。此代码在任意 View 的 UIView 类别的上下文中工作,包括 UIImageView:

- (UIImage *) capture {
CGRect screenRect = self.frame;
CGFloat scale = [[UIScreen mainScreen] scale];
UIGraphicsBeginImageContextWithOptions(screenRect.size, YES, scale);

CGContextRef ctx = UIGraphicsGetCurrentContext();
[[UIColor blackColor] set];
CGContextFillRect(ctx, screenRect);

[self.layer renderInContext: ctx];

UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

return newImage;
}

关于iphone - CGAffineTransform重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5995923/

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