UIImageView旋转而不移动Image

时间:2014-05-12 17:47:51

标签: ios objective-c xcode

您好,
我想在不移动整个" png"的情况下轮换我的UIImageView。没有代码只是为了测试会发生什么 _fanImage.transform = CGAffineTransformMakeRotation(45);

它转动但整个图像移动。我怎么办,这不会发生?

2 个答案:

答案 0 :(得分:0)

你可以尝试这样的事情。你应该轮换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;
}

答案 1 :(得分:0)

我认为您的意思是希望图像视图围绕它的中心点旋转。是对的吗?如果是这样,那么默认情况下视图应该是什么。

你应该搜索"翻译,缩放和旋转视图"在Xcode中阅读结果文章。

请注意,所有iOS角度都以弧度指定,而不是度数。

您的示例图像并非真正有用,因为我们无法看到图像视图被绘制到的帧。几乎不可能根据您从保管箱链接的图片来判断您的图像视图正在做什么以及它们应该做什么。

完整的360度是2pi。

你应该使用

CGFloat degrees = 45;
CGFloat radians = degrees/180*M_PI;
_fanImage.transform = CGAffineTransformMakeRotation(radians);

这将修复代码的旋转量,但可能不是旋转位置。