UIImageView 旋转而不移动图像
Posted
技术标签:
【中文标题】UIImageView 旋转而不移动图像【英文标题】:UIImageView rotation without moving Image 【发布时间】:2014-05-12 17:47:51 【问题描述】:嗨,
我想在不移动整个“png”的情况下旋转我的UIImageView
。没有代码只是为了测试发生了什么
_fanImage.transform = CGAffineTransformMakeRotation(45);
它会转动,但整个图像会移动。我该怎么做才能避免这种情况发生?
【问题讨论】:
我不明白你的问题。你的意思是图像视图应该旋转但图像视图中设置的图像不应该? 不仅图像应该旋转而不是整个 ImageView,因为当 ImageView 旋转时,图像会移动到另一个地方 我认为这是不可能的。我不知道当您将图像直接绘制到视图上并旋转视图时会发生什么。应该看起来与图像视图相同。但是我仍然不明白您所说的“图像在另一个地方移动”是什么意思。 好的等待:旋转前:dropbox.com/s/ba3zvk0xf0aoilc/… 旋转后:dropbox.com/s/a9xfndfsegzn6vl/… 【参考方案1】:你可以尝试这样的事情。你应该旋转UIImage
而不是UIImageView
。
- (UIImage *)imageWithTransform:(CGAffineTransform)transform
CGRect rect = CGRectMake(0, 0, self.size.height, self.size.width);
CGImageRef imageRef = self.CGImage;
// Build a context that's the same dimensions as the new size
CGContextRef bitmap = CGBitmapContextCreate(NULL,
self.size.width,
self.size.height,
CGImageGetBitsPerComponent(imageRef),
0,
CGImageGetColorSpace(imageRef),
CGImageGetBitmapInfo(imageRef));
// Rotate and/or flip the image if required by its orientation
CGContextConcatCTM(bitmap, transform);
// Draw into the context; this scales the image
CGContextDrawImage(bitmap, rect, imageRef);
// Get the resized image from the context and a UIImage
CGImageRef newImageRef = CGBitmapContextCreateImage(bitmap);
UIImage *newImage = [UIImage imageWithCGImage:newImageRef];
// Clean up
CGContextRelease(bitmap);
CGImageRelease(newImageRef);
return newImage;
【讨论】:
谢谢我找到了一个类似的教程,现在它可以工作了,但是现在 UIImageView 不再对触摸做出反应了。 好的,但这是你第一次提到响应触摸,你还没有展示任何与处理触摸相关的代码。【参考方案2】:我认为您的意思是您希望图像视图围绕其中心点旋转。是对的吗?如果是这样,这就是视图默认应该做的事情。
您应该在 Xcode 中搜索“平移、缩放和旋转视图”并阅读结果文章。
请注意,ios 的所有角度均以弧度而非度数指定。
您的示例图像并没有真正的帮助,因为我们看不到图像视图被绘制到的框架。几乎不可能根据您从 Dropbox 链接的图片来判断您的图像视图在做什么以及它们应该做什么。
一个完整的 360 度是 2pi。
你应该使用
CGFloat degrees = 45;
CGFloat radians = degrees/180*M_PI;
_fanImage.transform = CGAffineTransformMakeRotation(radians);
这将修复代码的旋转量,但可能不会修复旋转位置。
【讨论】:
谢谢,这也行不通。我找到了一个教程,现在它的工作原理与@iphonic 的答案非常相似:) 什么意思? “不起作用”是什么意思?在说“它不起作用”或“现在它对触摸没有反应”之类的话之前,您需要更好地解释您遇到的问题。以上是关于UIImageView 旋转而不移动图像的主要内容,如果未能解决你的问题,请参考以下文章