可设计化的UIViewController

12
我希望能够在代码中布局我的视图控制器,但可以在界面构建器中看到布局的效果。
我知道我可以创建一个UIView子类,将其设为IBDesignable,并将其分配给视图控制器的视图,但这需要我将所有其他子视图属性设为此UIView子类的属性,而不是视图控制器的属性。
真正想要的是能够在代码中布局视图控制器,但快速查看任何更改而无需重新构建项目。如果这在playgrounds中可行,那么也欢迎提供有关如何实现它的答案。
感谢您的任何建议。
2个回答

1
我找到了一种使用IBDesignable测试视图控制器布局的解决方法。
1.像平常一样在代码中布置你的视图控制器。
2.创建一个IBDesignable的UIView子类,并将视图控制器的视图添加为其子视图。
3.创建一个xib并将其视图的类设置为第二步中创建的子类。
关于第二步的详细说明,你的IBDesignable的initWithFrame:方法可能如下所示。
{
    self = [super initWithFrame:frame];
    MyViewController *viewController = [MyViewController alloc] init];
    viewController.view.frame = self.bounds;
    [self addSubview:viewController.view];
    return self;
}

除了这个initWithFrame方法,所有的布局代码都可以由你的视图控制器处理。你可能想在子视图的prepareForInterfaceBuilder方法中向视图控制器传递数据。

-1
为了在Xcode中布局自己的类,您需要首先在Swift Playground中导入它们:这里有更多信息。
之后,就来到了“棘手”的部分。为了使您的类可以在Playground中进行调试和查看,您的类必须符合协议:CustomPlaygroundQuickLooacable
这里有一个来自WWDC的快速示例:

通过实现这个协议,你基本上是在告诉 Playground 如何表示你自己的类。我还没有找到更好的解决方案。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接