在工程里拖入login@2x login@3x倆張圖片爱榕,然后使用如下代碼:
BGimageView.image = [UIImage imageWithContentsOfFile:path];```
來獲取對應(yīng)的圖片是沒有問題的瓣喊。
看到 *Apple*的開發(fā)文檔說明 `imageWithContentsOfFile:`是可以自動區(qū)分*@2x* *@3x* 的圖片的,所以我就試試吧呆细。
```NSString *path = [[NSBundle mainBundle]pathForResource:@"login" ofType:@"png"];
BGimageView.image = [UIImage imageWithContentsOfFile:path];
奇怪的事出現(xiàn)了型宝、這么寫并沒有獲取到圖片,返回的path打印的結(jié)果為空絮爷。于是我就懷疑imageWithContentsOfFile
能區(qū)分@2x @3x是不是真的趴酣。再次仔細查看文檔我又看到了這么一句話
The full or partial path to the file.
`完整或部分鏈接`
是不是我獲取的path有問題呢?然后我用NSString *path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"login.png"]; BGimageView.image = [UIImage imageWithContentsOfFile:path];
試了一下果然獲取到了圖片坑夯,真是皇天不負有心人岖寞。
理解下NSString *path = [[NSBundle mainBundle]pathForResource:@"login" ofType:@"png"];
是獲取到的是具體的某一個文件@2x就是@2x,@3x就是@3x柜蜈,而Login就是login仗谆,所以用login來獲取圖片的地址因為根本就不存在login這個圖片指巡,而NSString *path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"login.png"];
獲取到的是類似文件的相對路徑(這么理解)具體這里面的@2x、@3x就是imageWithContentsOfFile:
自動來匹配了隶垮。
2017.11.03號更新
Xcode9 出來的同時伴隨一個巨坑藻雪,導(dǎo)致小伙伴們按我上文所說的方法依然獲取不到圖片。解決如下(只針對Xcode9)
選中工程文件-》Build Phase -》Copy Bundle Resources 再添加一遍圖片即可
Xcode9 當你拖拽圖片進入工程的時候默認沒有添加到bundle中狸吞,故取不到圖片勉耀。
但是9之前的可以小伙伴們可以放心使用(Xcode9 獨享!LF1愠狻)。