ios - 如何使用 xcassets 构建框架

标签 ios swift xcasset

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

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)
}

enter image description here

最佳答案

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

更改您的代码以使用 init function 的捆绑参数

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

关于ios - 如何使用 xcassets 构建框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47508204/

相关文章:

swift - 无法以编程方式将 Storyboard 中的颜色集更改为 xcassets 目录中的颜色

ios - UIButton 捕捉图像没有响应

ios - ios推送通知续订

ios - 如何将导航 Controller 放入标签栏 Controller 中?

ios - 使用 AVPlayer 播放的视频从 swift3 的容器 View 中消失

ios - 如何使用解析保持当前用户 session 处于事件状态?

objective-c - UITextField 自定义

ios - 无法为索引为'UIButton'的[uiButton]类型下标(Swift)

ios - 无法将 xcassets 分配给 Xcode 11 上的主要目标

ios - 添加 WatchKit 目标后,它的文件变为红色