如何在界面构建器中使用框架中的 UIView 子类
Posted
技术标签:
【中文标题】如何在界面构建器中使用框架中的 UIView 子类【英文标题】:How to use a UIView subclass from a framework within interface builder 【发布时间】:2019-05-17 17:11:20 【问题描述】:问题
我已经开始将我的代码分成模块,所以我做了一个名为GEView
的框架。
问题出在界面生成器中。 UIView
使用框架进行子类化:
但是,我看不到任何 @IBInspectable
属性。当这个类在项目中而不是分离到一个框架中时,它确实有效。如何查看这些以便更改属性?
框架类
/// UIView subclass to allow creating corners, shadows, and borders in storyboards.
@IBDesignable
open class GEView: UIView
/* ... */
// MARK: - Rounded corners
@IBInspectable
public var cornerRadius: CGFloat = 0
didSet
layer.cornerRadius = self.cornerRadius
layer.masksToBounds = true
/* ... */
框架实现
我什至在包含此视图的界面构建器中的该视图控制器的类中添加了import GEView
,但仍然无法正常工作。
这是我第一次在项目中使用我自己的框架,所以我可能会错误地创建或导入它。这是项目层次结构:
半工作法
我设法让Interface Builder
至少能够识别GEView
类。我在我的项目中尝试了这段代码:
@IBDesignable
class IBGEView: GEView
@IBInspectable
var _cornerRadius: CGFloat return cornerRadius
然后我将在Interface Builder
中使用IBGEView
进行子类化。这绝不是我一直在寻找的解决方案,所以我仍在寻找。 这不是解决方案。
【问题讨论】:
到目前为止 - 我不再在框架中使用它,直到有一个可行的答案。 【参考方案1】:我认为您还需要指定模块。通常,它是框架的名称。从目标中取消选中模块并在那里写入框架的名称
【讨论】:
仍然不起作用 - 而且,GEView
无论如何都不是下拉列表中的选项
如果你在你的类中导入 GEView 并且它正在编译,那么你肯定有一个名为 GEView 的模块。有时 xcode 无法识别它。很确定您必须在此处提及正确的模块名称。
这是我第一次使用框架,所以我在实现它们时可能做错了
仍然没有运气以上是关于如何在界面构建器中使用框架中的 UIView 子类的主要内容,如果未能解决你的问题,请参考以下文章
XIB 中的 UIView 子类不显示(drawRect:从未调用)