UILabel的屏幕快照和UIImageView中的内容

我正在尝试截取我的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();

创建一个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;
}

将这些视图添加到公共容器视图中,然后调用- (BOOL)drawViewHierarchyInRect:(CGRect)rect afterScreenUpdates:(BOOL)afterUpdates视图在上下文中呈现它。

链接地址: http://www.djcxy.com/p/68151.html

上一篇: ScreenShot of an UILabel and what is in a UIImageView

下一篇: UIScrollView Zoom: Limit panning to imageView.image bounds