大UIImage没有在UIImageView中显示

时间:2015-06-19 15:20:25

标签: ios swift uiimageview uiimage

我正在捕获UIWebView的整页截图并通过segue传递图像:

Arrays.sort(regretProfits, new Comparator<RegretProfit>(){
            @Override
            public int compare(RegretProfit first, RegretProfit second){
                if (first.possibleRoutes <= 0 && second.possibleRoutes > 0){
                    return 1;
                }
                if (first.possibleRoutes <= 0 && second.possibleRoutes <= 0){
                    return 0;
                }
                if (first.possibleRoutes > 0 && second.possibleRoutes <= 0){
                    return -1;
                }
                if (first.possibleRoutes < solution.schedule.size() - kay + 1 || second.possibleRoutes < solution.schedule.size() - kay + 1){
                    if (first.possibleRoutes < second.possibleRoutes){
                        return -1;
                    }
                    if (first.possibleRoutes > second.possibleRoutes){
                        return 1;
                    }
                    if (first.profit > second.profit){
                        return -1;
                    }
                    if (first.profit < second.profit){
                        return 1;
                    }
                }
                if (first.regret > second.regret){
                    return -1;
                }
                if (first.regret < second.regret){
                    return 1;
                }
                return 0;
            }
        ;});

然后将UIImage保存到应用程序目录中的// WebViewController.swift override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { if segue.identifier == "captureSegue" { var captureViewcontroller:CaptureViewController = segue.destinationViewController as! CaptureViewController captureViewcontroller.tempCaptureImage = image } } 就好了。如果我从文件系统打开它,它在预览中显示得很好。但是,如果截图非常大,则图像不会在UIImageView中显示。 UIImageView呈现空白。添加断点会显示图像数据存在,而不是渲染。

Documents/Images

这可能是因为图像很大吗?如果我捕获的页面较小,则图像显示正常。是否有任何推荐的技术可以在iDevices上查看大图像?

修改

以下是带有断点的变量视图的输出。也许你会看到我失踪的东西。

Breakpoint variable view in CaptureViewController

2 个答案:

答案 0 :(得分:1)

您不会提供有关图像实际大小的任何信息,因此无法说出您可能会遇到的限制。但请记住,与单尺度图像相比,三尺度图像将基础位图存储器大小乘以9。这是一个数量级!我完全相信你会迅速超过应用程序的内存容量,如果你试图访问太大的图像,甚至会崩溃。因此,第一步肯定是将图像加载为单尺度图像;请参阅ImageIO框架以了解如何执行此操作。如果您想知道如何显示非常大的图像,另请参阅CATiledLayer上的文档。

答案 1 :(得分:1)

对于有类似问题的人,可能会尝试在真实设备中进行测试。对我来说,尺寸为1000 x 7000的图像不会显示在Simulator和Interface Builder中,但可以在iPhone 6s plus中显示。

此外,如果图像大小超过10000 x 10000,Interface Builder会抱怨。