UILabel 的屏幕截图和 UIImageView 中的内容
Posted
技术标签:
【中文标题】UILabel 的屏幕截图和 UIImageView 中的内容【英文标题】:ScreenShot of an UILabel and what is in a UIImageView 【发布时间】:2016-04-06 19:21:40 【问题描述】:我正在尝试截取我的 UIImageView 和其上的 UILabel 的屏幕截图。
到目前为止,我在 ImageView 中抓取 UIImage,然后在其上渲染叠加层,但 UILabel 的定位都是错误的。我将捕获的大小设置为实际图像大小(这不是我想要的)。
我只是希望能够截取屏幕上显示的确切内容。
CGSize imageSize = self.imageFromOtherView.size;
// define the size and grab a UIImage from it
UIGraphicsBeginImageContextWithOptions(imageSize, NO, 0);
[self.imageFromOtherView drawInRect:CGRectMake(0, 0, imageSize.width, imageSize.height)];
[self.socialLabel.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *capturedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
【问题讨论】:
您想要获取整个窗口的屏幕截图还是仅屏幕上的图像?从您的问题中很难看出。 【参考方案1】:创建一个 UIView 来保存 UIImageView 和 UILabel。然后通过此代码传递此容器视图。我将视图作为一个名为 viewForPhoto 的属性,因此当调用代码时,它只会捕获该视图。您可以调整它以使其接收视图。这将返回您想要的 UIImage。
- (UIImage *)imageByRenderingView
UIGraphicsBeginImageContextWithOptions(self.viewForPhotoView.bounds.size, NO, 0.0);
[self.viewForPhotoView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return resultingImage;
【讨论】:
【参考方案2】:将这两个视图添加到一个公共容器视图中,然后在视图上调用- (BOOL)drawViewHierarchyInRect:(CGRect)rect afterScreenUpdates:(BOOL)afterUpdates
以在上下文中呈现它。
【讨论】:
以上是关于UILabel 的屏幕截图和 UIImageView 中的内容的主要内容,如果未能解决你的问题,请参考以下文章
UILabel 和 UIButton - 截断标签而不是按钮