如何裁剪用户缩放的UIImageView

时间:2013-09-14 10:28:05

标签: objective-c cocoa-touch uiimageview

我有UIImageView *userImageUIImageView *imageSquare,其大小为320x320。用户可以使用userImage来改变尺寸&改变立场。 imageSquare是静态的,位于屏幕中间,应该被视为裁剪视图

下面的代码可以将userImage裁剪为imageSquare原始尺寸,但不会裁剪新的宽高比/比例。

我一直在疯狂尝试这样做,但我找不到办法。如何裁剪userImage的当前视图(用户正在操作的视图)?

 CGSize pageSize = imageSquare.frame.size;

    UIGraphicsBeginImageContext(pageSize);

    CGContextRef resizedContext = UIGraphicsGetCurrentContext();
    CGContextTranslateCTM(resizedContext, -imageSquare.frame.origin.x, -imageSquare.frame.origin.y);


    [userImage.layer renderInContext:resizedContext];
    image = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    if (image != nil) {
        NSLog(@"is not nil");
        NSData *imgData = UIImagePNGRepresentation(image);
        imageSquare.image = [[UIImage alloc]initWithData:imgData];

    }

1 个答案:

答案 0 :(得分:0)

您的320x320裁剪视图应该是一个UIView,其clipsToBounds(Interface Builder中的“剪辑子视图”)设置为YES,然后userImage应该是其子视图之一。

当用户更改大小/位置时,您将更改userImage.frame,并将为您处理裁剪。