如何使用 xcassets 构建框架

How to build framework with xcassets

我尝试用它自己的图像构建一个框架,它编译得很好。但是,当我将我的框架包含在另一个项目中时,它在加载图像时崩溃了,知道吗?

ImageTest(我的框架)

public class ImageTest {
    open func getImage() {
        return #imageLiteral(resourceName: "IMG_0745")
    }
}

我的项目

import ImageTest
...
...

override func viewDidLoad() {
    super.viewDidLoad()

    let imageView = UIImageView(image: ImageTest.getImage()) // crash !
    imageView.center = view.center
    view.addSubview(imageView)
}

图像在 ImageTest 框架中。当您执行此代码 return #imageLiteral(resourceName: "IMG_0745") 时,它会查看 ImageTest 项目的 Image.xcassets,当它在那里找不到图像时,就会导致崩溃。

更改您的代码以使用 init function

的捆绑参数
open func getImage() {
        return UIImage(named:"IMG_0745", bundle:Bundle(for: self), compatibleWith:nil)
    }

在 Swift 4 现在是

UIImage(named: "IMG_0745", in: Bundle(for:self), compatibleWith: nil)

Swift5,

UIImage(named: "IMG_0745", in: Bundle(for: xxxYourViewController.self), compatibleWith: nil)