0

我有一个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];

    }
4

1 回答 1

0

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

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

于 2013-09-14T20:00:26.487 回答