繁体   English   中英

ios 7 drawViewHierarchyInRect:afterScreenUpdates:仅限iPad上的黑屏

[英]ios 7 drawViewHierarchyInRect:afterScreenUpdates: black screen on iPad only

我有非常奇怪的情况......我试图通过调用drawViewHierarchyInRect: afterScreenUpdates:来捕获滚动视图中的contentSizecontentSize超过屏幕边界三次) drawViewHierarchyInRect: afterScreenUpdates:如下所示:

+ (UIImage *) imageFromScrollView: (UIScrollView *) scrollView {

    UIGraphicsBeginImageContext(size);

    [view drawViewHierarchyInRect: CGRectMake(0, 0, scrollView.contentSize.width, scrollView.contentSize.height)
               afterScreenUpdates: YES];

    UIImage * image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();  

    return image;  
}

它适用于:iPhone设备,iPhone和iPad模拟器,但不适用于iPad 设备 你有过类似的问题吗? 我将不胜感激任何帮助!

使用

UIGraphicsBeginImageContextWithOptions(size, NO, [UIScreen mainScreen].scale);

NO在这里很重要,因为它返回非不透明图像。

这段代码适合我。

UIImage *image = [SnapShotter snapShotEntireScrollingView:self.receiptTableView];


+ (UIImage *)snapShotEntireScrollingView:(UIScrollView *)view
{
    return [self snapShotEntireScrollingView:view withEdgeInsets:UIEdgeInsetsZero];
}


+ (UIImage *)snapShotEntireScrollingView:(UIScrollView *)view withEdgeInsets:(UIEdgeInsets)insets
{
    CGRect currentFrame = view.frame;

    CGRect fullFrame = view.frame;
    fullFrame.size.width = MAX(currentFrame.size.width, view.contentSize.width);
    fullFrame.size.height = MAX(currentFrame.size.height, view.contentSize.height);
    view.frame = fullFrame;

    UIImage *image = [self snapShotView:view withEdgeInsets:insets];

    view.frame = currentFrame;
    return image;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM