【问题标题】:Can't get a screenshot of UIView to be displayed inside UIImageView无法在 UIImageView 中显示 UIView 的屏幕截图
【发布时间】:2013-08-26 16:59:13
【问题描述】:

这是我获取视图屏幕截图的代码:

if (NULL != UIGraphicsBeginImageContextWithOptions){
    UIGraphicsBeginImageContextWithOptions(pagedScrollView.frame.size, NO, [[UIScreen mainScreen] scale]);
}else{
    UIGraphicsBeginImageContext(pagedScrollView.frame.size);
}

[pagedScrollView.layer renderInContext:UIGraphicsGetCurrentContext()];
screenshotImage = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

UIImageView *imageView = [[UIImageView alloc] initWithImage:screenshotImage];
imageView.frame = CGRectMake(imageView.frame.origin.x, imageView.frame.origin.y, imageView.frame.size.width, imageView.frame.size.height);
imageView.backgroundColor = [UIColor greenColor];
[self.view addSubview:imageView];

我 100% 确定我有正确的框架和正确的视图 - UIImageView 的大小说 - 但问题是我无法让我的 UIImage 显示在 UIImageView .

UIImageView 被添加到视图中,我看到上面有一个绿色区域 - 但里面没有图像,有什么问题吗?

我使用的是 iOS 6 和 ARC。

【问题讨论】:

    标签: cocoa-touch uiview uiimageview uiimage uikit


    【解决方案1】:

    好吧,我刚刚测试了在我的视图控制器视图上运行的代码,并且捕获和显示工作正常。这让我相信pagedScrollView 可能为零,或者为零帧。

    无论哪种方式,您都将从空白上下文创建图像,然后将其传递给您的图像视图,从而导致没有任何可见图像。

    【讨论】:

    • 那么 UIImage 发布得如此之快,以至于它不会留在那里怎么样?这可能吗?
    • 我有很多,大约 5 个,我将它们全部添加到 UIScrollView。只有第一个留在那儿,而我看不到其他人。
    【解决方案2】:

    事实证明,我一直在截取一个很长的UIScrollView 的屏幕截图,而且我总是截取它的第一页 - 它有很多页面,有时图层中没有任何内容。事实证明,UIImage 从未被释放,内存可以有效存储数十个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-13
      • 2013-10-03
      • 1970-01-01
      • 2020-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多