我开发了一个应用程序。我想将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尺寸的图像,如同小尺寸图像一样。
答案 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答案获得流畅的用户界面