2016-09-19 7 views
8

मेरे पास संपत्ति फ़ोल्डर के साथ एक बंडल है। मैं UIImage(named: "drop_arrow", inBundle: bundle, compatibleWithTraitCollection: nil) का उपयोग कर (ठीक है, यह तेजी से है 3 बराबर)एक बंडल से संपत्ति फ़ोल्डर से छवियों को लोड करना

path = Bundle.main.path(forResource: "LiveUI", ofType: "bundle") 
if path != nil { // path with bundle is found 
    let bundle: Bundle = Bundle.init(path: path!)! // bundle is there 
    let image: UIImage? = UIImage(named: "HomePlayButton", in: bundle, compatibleWith: nil) 
    // HomePlayButton exists in the bundle/asset folder 
    // but image is nil 
} 

यह मेरा परियोजना संरचना है के बारे में ढेर पर सभी जवाब पढ़ा है:

enter image description here

आप कोड के साथ किसी भी समस्या को देख सकते हैं/परियोजना की संरचना?

अद्यतन! ... छवि सार्वभौमिक रूप में सभी प्रस्तावों के लिए निर्धारित है: enter image description here

+0

इस छवि को बंडल नाम 'UIImage (नाम: "yourbundlefile.bundle/HomePlayButton.png") के साथ आज़माएं! ' –

उत्तर

6

दो चीजों को जांचने के लिए।

1) सुनिश्चित करें कि आपकी संपत्ति बंडल में एक बंडल पहचानकर्ता सेट के साथ एक Info.plist है। आपके स्क्रीनशॉट से ऐसा नहीं लगता है कि यह मामला है।

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>CFBundleIdentifier</key> 
    <string>MyBundle</string> 
</dict> 
</plist> 

2) सुनिश्चित करें कि आपके बंडल में संकलित संपत्ति कैटलॉग है। Assets.car नाम दिया जाना चाहिए। मुझे नहीं लगता कि एक्सकोड सिर्फ एक संसाधन बंडल के अंदर एक Assets.xcassets फ़ोल्डर को संकलित करेगा (बंडल प्रभावी रूप से एक्सकोड के लिए अपारदर्शी है; वैसे ही यह आपके द्वारा रखी गई किसी भी .m स्रोत फ़ाइलों को संकलित नहीं करेगा)। एप बंडल में संपत्ति बंडल की प्रतिलिपि बनाने से पहले आपको संकलित Assets.car फ़ाइल को अपनी संपत्ति बंडल में कॉपी करने के लिए एक कस्टम बिल्ड चरण की आवश्यकता हो सकती है।

आप अपने ऐप बंडल को ढूंढकर और उस पर राइट क्लिक करके "पैकेज सामग्री दिखाएं", फिर निहित बंडल पर इन्हें देख सकते हैं।

+0

" संकलित संपत्तियों की प्रतिलिपि बनाने के लिए आपको कस्टम बिल्ड चरण की आवश्यकता हो सकती है, संपत्तियों से पहले अपनी संपत्ति बंडल में कॉपी करें बंडल को ऐप बंडल में कॉपी किया गया है। " क्या आप उदाहरण प्रदान कर सकते हैं? –

+0

@TomSwift मैंने compets.xcassets को Assets.car में संकलित किया है और इसे xxx.bundle के अंदर info.plist के साथ bundleIdentifier = xxx के साथ रखा है, लेकिन यह अभी भी काम नहीं कर रहा है। मैं यहाँ कुछ भी याद कर रहा हूँ? UIImage * image = [UIImage imageNamed: @ "iimageName" में बंडल: बंडल संगत WithTraitCollection: nil]; –

0

बस एक विचार, सुनिश्चित करें कि बंडल और बंडल में संपत्ति सूची एक लक्ष्य सदस्यता संपत्ति सही लक्ष्य आप लोड करने के लिए कोशिश कर रहे हैं करने के लिए आवंटित कर दिया है (उपयोगिताएँ फलक -> लक्ष्य सदस्यता) के साथ छवियों:

Target Membership

ऐसा नहीं है कि अपने लक्ष्य बंडल नहीं बल्कि किसी कारण से संपत्ति सूची को खोजने के लिए सक्षम है संभव है।

संबंधित मुद्दे