最近开发一个程序的时候出现了一个小问题,我用U盘转移到另一台电脑上之后,navigationbar的背景图片消失了,让我非常疑惑。最后发现是@2x图片的问题。

以前听前辈说过,在使用图片的时候尽量使用

UIImage *img = [[UIImage alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"navigationbar_bg@2x" ofType:@"png"]];

这个方法,不要使用

UIImage *img = [UIImage imageNamed:@"navigationbar_bg.png"];

方法。
第二种方法在一些图片很少,或者图片很小的程序里是ok的。但是,在大量加载图片的程序里,请千万不要这样做。这种方法在application bundle的顶层文件夹寻找由供应的名字的图象。如果找到图片,装载到iPhone系统缓存图象。那意味图片是放在内存里作为cache的。图片多了,图片cache极有可能不会响应 memory warnings and release its objects。
因此,在使用图片的时候,建议使用 “initWithContentsOfFile:” 这个方法。

我使用的就是“initWithContentsOfFile:”,但是这个方法要注意了,如果有高清图,也就是@2x的,就不能自动获取到了,需要在名称上加上@2x才行。我就是因为没加上@2x,导致找不到图片。

打赏作者
如果这篇文章帮助了你,可以请作者喝罐可乐,以此激励作者创作更多!

您的支持将鼓励我继续创作!

[微信] 扫描二维码打赏

[支付宝] 扫描二维码打赏