儘管與包含該項目圖像文件名的xcassets中的每個項目關聯的Content.json文件(請參見下文)似乎並未在文件系統級別可訪問。編譯後,所有圖像都放置在單個文件系統文件夾中。 json文件是自動生成的,不應該被編輯,但它確實爲解決方法提供了一個模板。
爲每個文件命名後綴一致,以匹配出現在json文件中的相應成語,縮放和子類型。這需要通過爲每個資產選擇「Show in Finder」選項並對每個文件進行重命名來進行手動工作,但是一旦完成,您可以使用pathForResource和函數結合使用,將適當的後綴添加到基礎資產名稱中,大小的圖像。
示例代碼檢索路徑:
NSString *imageName = @"Add to Cart";
NSString *imageSuffix = [self someMethodThatDeterminesSuffix]; // Example: "-iphone-2x-retina4"
NSString *imagePath = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%@%@", imageName, imageSuffix] ofType:@"png"];
的 「加入購物車」 的形象資產實例Contents.json文件:
{
"images" : [
{
"idiom" : "iphone",
"scale" : "1x",
"filename" : "Add to Cart-iphone-1x.png"
},
{
"idiom" : "iphone",
"scale" : "2x",
"filename" : "Add to Cart-iphone-2x.png"
},
{
"idiom" : "iphone",
"filename" : "Add to Cart-iphone-2x-retina4.png",
"subtype" : "retina4",
"scale" : "2x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
也有同樣的問題! – vilanovi
我也需要圖像的實際路徑,因爲我不想使用imageNamed(破碎緩存),事實證明資產目錄也被破壞而沒有編程訪問。 – Alper
@MobileVet你有沒有找到解決方案? – Keab42