[英]Bundle subdirectory access
我正在嘗試在程序中實現更改界面的功能,例如主題。 我決定使用捆綁軟件,因此在我的情況下,它們看起來像這樣:
每個捆綁包都有以下文件夾:
因此,我可以使用以下代碼從捆綁包中獲取任何所需圖片的路徑:
path = [NSString stringWithFormat:@"%@.bundle/graphic/%@", selectedBundle, imageName];
當我從包中獲取圖片時,沒有問題,路徑如下所示(我使用斷點對其進行了檢查): Theme1.bundle / graphic / pic1.png並創建UIImage
image = [UIImage imageNamed:path];
圖片加載沒有任何問題。
但是,當我嘗試使用AVAudioPlayer
播放聲音時,我以相同的方式獲取聲音的路徑,並且路徑如下所示: Theme1.bundle / sound / sound1.wav ,但是當我嘗試創建NSData時
sound = [NSData dataWithContentsOfFile:path];
它沒有初始化。
當我嘗試將聲音保留在主捆綁中並與
path = [[NSBundle mainBundle] pathForResource:@"sound1" ofType:@"wav"];
一切都很好,路徑看起來像這樣
/var/mobile/Applications/E8313E88-CE05-44B2-A80C-B05331D8596F/Myapp.app/sound1.wav
我不明白為什么這適用於圖片而不適用於聲音?
為什么我無法從捆綁中獲得聲音? 我只能建議的一件事imageNamed:
做一些工作以找到文件和dataWithContentsOfFile:
正確路徑。
用你的代碼代替
sound = [NSData dataWithContentsOfFile:path];
采用
NSString * path = [NSString stringWithFormat:@"%@.bundle/sounds/%@", selectedBundle, soundName];
NSString *fullPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:path];
sound = [NSData dataWithContentsOfFile:path];
說明: ImageNamed
將應用程序的路徑附加到您指定的圖像名稱
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.