iOS8フレームワークから画像を読み込む



Load Image From Ios 8 Framework



解決:

@Renatusの回答は完全に有効であり、コアの問題に対処していますが(フレームワークのバンドルを指定する必要があります)、少し直接的であるため、使用したソリューションを投稿したいと思いました。

Swift 3.0 / 4.0 / 5.0



let image = UIImage(named: 'YourImage'、in:Bundle(for:YOURFRAMEWORKCLASS.self)、compatibleWith:nil)

または、このパターンを非クラス、別名非「静的」、関数:

let image = UIImage(named: 'YourImage'、in:Bundle(for:type(of:self))、compatibleWith:nil)

またはこのパターンクラス関数:



let image = UIImage(named: 'YourImage'、in:Bundle(for:self)、compatibleWith:nil)

これらの代替手段は、切り取りと貼り付けに適しています。


UIImage(named: 'Background.png')は、内部でNSBundle.mainBundle()を呼び出します。そのため、コードはフレームワークバンドルではなく、ホストアプリのバンドルでリソースを見つけようとしています。フレームワークのバンドルからUIImageをロードするには、次のスニペットを使用します。

let frameworkBundle = NSBundle(forClass:YOURFRAMEWORKCLASS.self)let imagePath = frameworkBundle.pathForResource( 'yourImage.png'、ofType: '')if imagePath!= nil {result = UIImage(contentsOfFile:imagePath!)}

編集:説明を追加(thxからmilz)




Swift 3.0の場合:

let currentBundle = Bundle(for:YOURCLASS.self)guard let path = currentBundle.path(forResource:imageName、ofType: 'jpg')else {return defaultImage} return UIImage(contentsOfFile:path)?? defaultImage