使用图像快速加载UIview背景

时间:2013-04-26 07:40:30

标签: iphone ios

我开发了一个应用程序。我想将uiview背景设置为图像。图像大小为1.6 mb.I遵循以下代码。

UIGraphicsBeginImageContext(self.view.frame.size);
[[UIImage imageNamed:@"image.png"] drawInRect:self.view.bounds];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
self.view.backgroundColor = [UIColor colorWithPatternImage:image];

但与小尺寸图像相比需要更多时间。所以请帮我如何加载3mb尺寸的图像,如同小尺寸图像一样。

2 个答案:

答案 0 :(得分:1)

您可以在后台队列上执行绘图操作,因此不会冻结UI:

CGRect imgRect = self.view.bounds;
dispatch_async(dispatch_get_global_queue(0, 0), ^{
    UIGraphicsBeginImageContext(imgRect.size);
    [[UIImage imageNamed:@"image.png"] drawInRect:imgRect];
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    UIColor* bgcolor = [UIColor colorWithPatternImage:image];
    dispatch_async(dispatch_get_main_queue(), ^{
        self.view.backgroundColor = bgcolor;
    });
});

还可以使用工具ImageOptim优化图像。

答案 1 :(得分:0)

最好是resize image,然后添加Application bundle以便更快地执行。

此处我认为no need image resizing UIView pattern image background solve memory issue NSString *imgfile = [[NSBundle mainBundle] pathForResource:@"image" ofType:@"png"]; UIImage *currentImage = [UIImage imageWithContentsOfFile:imgfile]; self.view.backgroundColor = [UIColor colorWithPatternImage:currentImage]; 。{/ 1}}

你可以{{1}}这样:

{{1}}

参考ios-imagenamed-vs-imagewithcontentsoffile链接。

编辑:使用@ phix23答案获得流畅的用户界面