在UIImageView中旋转图像

mur*_*npl 7 iphone objective-c uiimageview uiimage ios

是否可以在UIImageView中仅旋转图像?我正在寻找有关它的信息,但我只找到了旋转UIImageVeiw的信息.

cda*_*her 15

您可以使用以下代码旋转图像.注意,这使用了一个CGImageRef,您可以从UIImage中获取

CGImageRef imageRef = [self CGImageRotatedByAngle:[image CGImage] angle:30];
Run Code Online (Sandbox Code Playgroud)

获得旋转后的图像后,可以将ImageView的图像设置为新的旋转图像,如下所示:

UIImage* img = [UIImage imageWithCGImage: imageRef];
myImageView.image = img;
Run Code Online (Sandbox Code Playgroud)

这是一个旋转imageRef的方法:

- (CGImageRef)CGImageRotatedByAngle:(CGImageRef)imgRef angle:(CGFloat)angle
{

    CGFloat angleInRadians = angle * (M_PI / 180);
    CGFloat width = CGImageGetWidth(imgRef);
    CGFloat height = CGImageGetHeight(imgRef);

    CGRect imgRect = CGRectMake(0, 0, width, height);
    CGAffineTransform transform = CGAffineTransformMakeRotation(angleInRadians);
    CGRect rotatedRect = CGRectApplyAffineTransform(imgRect, transform);

    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();

    CGContextRef bmContext = CGBitmapContextCreate(NULL,
                                                   rotatedRect.size.width,
                                                   rotatedRect.size.height,
                                                   8,
                                                   0,
                                                   colorSpace,
                                                   kCGImageAlphaPremultipliedFirst);
    CGContextSetAllowsAntialiasing(bmContext, YES);
    CGContextSetShouldAntialias(bmContext, YES);
    CGContextSetInterpolationQuality(bmContext, kCGInterpolationHigh);
    CGColorSpaceRelease(colorSpace);
    CGContextTranslateCTM(bmContext,
                          +(rotatedRect.size.width/2),
                          +(rotatedRect.size.height/2));
    CGContextRotateCTM(bmContext, angleInRadians);
    CGContextTranslateCTM(bmContext,
                          -(rotatedRect.size.width/2),
                          -(rotatedRect.size.height/2));
    CGContextDrawImage(bmContext, CGRectMake(0, 0,
                                             rotatedRect.size.width,
                                             rotatedRect.size.height),
                       imgRef);



    CGImageRef rotatedImage = CGBitmapContextCreateImage(bmContext);
    CFRelease(bmContext);
    [(id)rotatedImage autorelease];

    return rotatedImage;
}
Run Code Online (Sandbox Code Playgroud)


Dan*_*eek 6

看看旋转ImageView的图层.您需要导入QuartzCore库才能使其可访问.

myImageView.layer.transform = CGAffineTransformMakeRotation (1.5);
Run Code Online (Sandbox Code Playgroud)


小智 5

请试试这个,它对我有用:

[UIView beginAnimations:nil context:nil];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
[UIView setAnimationRepeatCount:10];
myImgView.transform = CGAffineTransformMakeRotation(M_PI);
[UIView commitAnimations];
Run Code Online (Sandbox Code Playgroud)

祝好运!