(在swift 2中编程)
在我的iOS应用程序中,我使用了框架。我也非常成功地使用了IBDesignable特性。我在框架中有一堆视图和按钮是IBDesignable的,因此在界面构建器的屏幕上呈现得很好。
问题是,这些视图中的一个在初始化时执行代码,如果它只在IBDesignable interfacebuilder的上下文中运行,则会执行Assert(执行该Assert只是为了呈现IB屏幕)。Assert的原因是有效的,而且真的不重要,底线是我不想在“正常”操作期间失去此功能。
我对解决方案的想法是知道代码何时被执行,以便在IB for IBDesignable模式下呈现,从而构建一个开关来不/执行Assert。
我尝试使用#if!TARGET_INTERFACE_BUILDER,但这不起作用,因为这是一个预处理器指令,因此只计算编译时间,并且框架是预编译的(当在实际应用中使用时)。
我也考虑过使用prepareForInterfaceBuilder(),但这并不适用,因为抛出Assert的类与UIView本身无关。
是否有一个函数或任何其他方法来检查在运行时(在一个框架中),你的代码正在运行的IB屏幕渲染的一部分,为IBDesignable模式?
2条答案
按热度按时间wtzytmuj1#
在测试了几十个解决方案之后,我发现以下解决方案可以可靠地工作:
vuktfyat2#
SWIFT 4版