3我有一个可以通过触摸操作的图像。
假设它是一个向上的箭头图像。旋转 180 度后,箭头现在指向下方,我想重置 CGAffineTransform 属性所以它认为现在又回到了 0 度。
我想要这个是因为无论图像的角度是 0 还是 180,我都必须进行平移、旋转、缩放等操作。
提前致谢。
已编辑 5 条回复:
嗯,我不确定这些答案是否符合我的要求。我很抱歉没有说清楚。
- 触摸箭头向上的图像并向右移动 - 一切都很好。
- 图像随旋转手势旋转并旋转 180 度 - 一切都很好
- 图像现在被触摸并移动到右侧 - 由于坐标是颠倒的,现在图像上下跳跃,使我的其他动画序列变得混乱。
为了防止上述问题和其他一些问题,我想在旋转 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);
如果您确实需要完全不进行任何转换的图像,则必须将其绘制回另一个图像。这也不是那么难,但我不推荐它作为您的第一个解决方案。此代码在任意视图的 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;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)