如何裁剪用户缩放的 UIImageView
Posted
技术标签:
【中文标题】如何裁剪用户缩放的 UIImageView【英文标题】:How to crop a user scaled UIImageView 【发布时间】:2013-09-14 10:28:05 【问题描述】:我有一个 UIImageView *userImage
和 UIImageView *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】:您的 320x320 裁剪视图应该是带有 clipsToBounds(Interface Builder 中的“剪辑子视图”)设置为 YES 的 UIView,然后 userImage 应该是它的子视图之一。
当用户改变大小/位置时,你改变 userImage.frame,裁剪将由你处理。
【讨论】:
以上是关于如何裁剪用户缩放的 UIImageView的主要内容,如果未能解决你的问题,请参考以下文章
Objective-C:从 UIScrollView 获取缩放的裁剪图像