我在这个网站上寻找一些解决方案,我发现这个答案并没有解决我的问题.
如何在Interface Builder中使用来自外部框架(扩展名为.framework的文件)的自定义UIView,而不使用CocoaPods,也不将此项目添加为项目的目标.
假设我有一个单独的项目:Cocoa Touch Framework项目模板,我想在我的其他项目中使用它.我将它添加到嵌入式二进制文件和链接框架和库中,我可以在Objective-C中使用它:
@import MyFramework;
Run Code Online (Sandbox Code Playgroud)
在斯威夫特:
import MyFramework
Run Code Online (Sandbox Code Playgroud)
但是从未知的原因,Interface Builder没有看到使用@IBDesignable的自定义视图有趣的想法是当我的项目运行时,外部框架的自定义视图正在显示.唯一的问题是在Interface Builder的设计过程中不显示任何内容.
我没有使用CocoaPods,我不想将我的框架项目作为Target嵌入,因为这是许多项目的通用框架.如何将此外部项目/框架附加到我的项目中,以便Interface Builder可以正常工作.当我使用Cocoa Touch Framework项目模板创建目标,以便此框架在我的项目"内部"时,Interface Builder在设计时和运行时期间按预期工作.
有什么方法可以将我的外部项目作为目标附加到其他项目?
我在OS X应用程序中实现了一个自定义控件,工作正常.绘制控件时,它使用来自非系统框架的代码.控件是用swift编写的,框架在Objective-C中.框架不与具有自定义控件的应用程序构建在同一项目或工作区中.我已将Framework添加到目标并将其添加到复制文件构建阶段.
当我在swift中将IBDesignable修饰添加到自定义控件类时,在尝试在Interface Builder中查看控件时出现错误.我得到的错误是:
file:///Users/ktam/github/MovingImagesDemo/Spinner2/SpinnerController.xib: error: IB Designables: Failed to render instance of Spinner:
dlopen(Spinner2.app, 1): Library not loaded: @executable_path/../Frameworks/MovingImages.framework/Versions/A/MovingImages
Referenced from: Spinner2.app
Reason: image not found
当我检查在IBDesignables子文件夹中创建的应用程序包时,框架位于应用程序包中的正确位置.我假设在这种情况下实际运行的可执行文件不是IBDesignables应用程序包中的可执行文件,但可能是某种类型的Interface Builder可执行文件,这解释了为什么无法加载Framework图像.
加载Interface Builder在使用IBDesignable呈现视图时可以找到的代码,我需要做什么?
进一步测试后的信息:
我重新构建框架,同时指定安装目录为〜/ Library/Frameworks,然后将构建的Framework复制到该位置,然后我更新了应用程序目标,以便包含〜/ Library/Frameworks以及应用程序和接口的Runpath搜索路径Builder现在正确绘制自定义控件.
这不是我需要的解决方案,但它指出了问题所在,我仍然需要弄清楚正确的解决方案是什么.