2015-10-11 10 views
8

Sto creando un pod e ho un catalogo di risorse immagine che vorrei utilizzare. Nel mio file .podspec, ho impostato in questo modo:Impossibile caricare immagini da .xcasset in CocoaPods

s.resource_bundles = { 
    'MyPodResources' => ['*.xcassets'] 
} 

ei Images.xcassets si trova nella directory radice del pod.

Quando provo a caricare le immagini usando imageNamed(), non funziona. Non ricevo un errore o un avvertimento ma non vengono visualizzate immagini.

Ecco la parte divertente: se provo ad aggiungere un'immagine nel mio Main.storyboard nell'applicazione di esempio, posso selezionare l'immagine e appare bene in Interface Builder. Tuttavia, quando eseguo l'app di esempio, l'immagine non è visibile.

Ho esaminato tutti i problemi su GH e ancora non riesco a trovare una soluzione a questo ... È un problema Xcode 7/iOS 9?

Grazie!

+1

sembrare un problema di appartenenza bersaglio –

+0

Qual è 'imageLoad'? Se si utilizza la funzione imageNamed, carica l'immagine dal pacchetto predefinito, quindi è necessario specificare il pacchetto MyPodResources direttamente per caricare l'immagine da lì. Prova a utilizzare la soluzione da questa domanda: http://stackoverflow.com/questions/26158980/impossible-to-load-an-image-in-xcassets-on-bundle – iyuna

+0

@Iyuna mi dispiace, significato imageNamed. Cercherò di caricarlo dal pacchetto, ma durante la mia ricerca ho trovato informazioni che non dovrebbero essere necessarie con CocoaPods - dovrebbe includere automaticamente il pacchetto in qualche modo ... – Jure

risposta

7

Alla fine, ho scritto un'estensione per UIImage e l'ho inserita nella directory del pod. Ecco come si presenta:

class func bundledImage(named: String) -> UIImage? { 
    let image = UIImage(named: named) 
    if image == nil { 
     return UIImage(named: named, inBundle: NSBundle(forClass: MyBasePodClass.classForCoder()), compatibleWithTraitCollection: nil) 
    } // Replace MyBasePodClass with yours 
    return image 
} 

lo sto usando come: imageView.image = UIImage.bundledImage("icon-grid")

Questo è tutto, spero che qualcuno trova questo utile!

0

a Swift 3:

let bundle: Bundle = Bundle(identifier: "Framework Bundle ID")! 
yourImageView.image = UIImage(named: "imageNameInAssets", in: bundle, compatibleWith: nil)