IBDesignable UIViewController

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IBDesignable UIViewController相关的知识,希望对你有一定的参考价值。

我希望能够在代码中布局我的视图控制器,但是看到界面构建器中显示的布局。

我知道我可以创建一个UIView子类,使其成为IBDesignable,并将其分配给视图控制器的视图,但这需要我创建此UIView子类的所有其他子视图属性,而不是视图控制器的属性。

真正的愿望是能够在代码中布局我的视图控制器,但在不重建项目的情况下快速查看任何更改。如果这可以通过游乐场来实现,那么描述如何做到这一点的答案也将受到赞赏。

谢谢你的任何建议。

答案

我找到了一种使用IBDesignable测试视图控制器布局的解决方法。

1.像在正常情况下一样在代码中布置视图控制器

2.创建IBDesignable UIView子类,并将视图控制器的视图添加为子视图。

3.创建一个xib并将其视图的类设置为您在步骤2中创建的子类

要详细说明第2步,您的IBDesignable的initWithFrame:方法可能看起来像

{
    self = [super initWithFrame:frame];
    MyViewController *viewController = [MyViewController alloc] init];
    viewController.view.frame = self.bounds;
    [self addSubview:viewController.view];
    return self;
}

因此,除了这个initWithFrame方法之外,您的视图控制器还可以处理所有布局代码。您可能希望在子视图的prepareForInterfaceBuilder方法中将数据传递给视图控制器。

另一答案

为了在Xcode中布置你自己的类,你需要先在你的swift playground中导入:here更多信息。

在你这样做之后,它就变成了“棘手”的部分。为了使你的类可调试和在操场上可见,你的类必须符合协议:CustomPlaygroundQuickLooacable

这里有一个来自WWDC的简单示例:

通过实施这个协议,你基本上告诉操场如何代表你已经上课。我还没有喜欢任何更好的解决方案。

以上是关于IBDesignable UIViewController的主要内容,如果未能解决你的问题,请参考以下文章

使用 IBDesignable 的水平虚线

IBDesignable UIButton 子类

如何创建 IBDesignable 自定义视图?

将@IBDesignable 用于渐变视图

Swift @IBDesignable/@IBInspectable UIView 样式

快速 IBDesignable 视图未显示在情节提要中