我是iOS开发的新手。我正在使用swift,我想以编程方式设计我的视图,但我想使用IBDesigner和IBInspectable来加速我的设计过程。
现在我有一个视图控制器,上面有各种按钮和标签。以下是我的代码片段:
@IBDesignable class LandingView: UIViewController, LandingViewProtocol {
@IBInspectable lazy var backButton: UIButton = {
var button = UIButton()
button.backgroundColor = Styles.BUTTON_COLOR
return button
}()
@IBInspectable lazy var caption: UILabel = UILabel()
}
我现在的问题是如何使用IBDesignable和IBInspectable的界面构建器?我需要添加.xib吗?我看到其他一些问题提到我需要使用游乐场,但我试图避免使用它,我基本上想知道是否可以查看我的整个viewcontroller?
谢谢,
答案 0 :(得分:7)
您不能将IBDesignable与另一个不从UIView或NSView继承的类一起使用。查看Apple关于IBDesignable的指南:
您可以使用两个不同的属性 - @ IBDesignable和 @ IBInspectable - 启用实时,交互式自定义视图设计 Interface Builder。创建继承自的自定义视图时 在UIView类或NSView类中,可以添加@IBDesignable 在类声明之前的属性
一
答案 1 :(得分:3)
使用IBDesignable测试视图控制器布局有一种解决方法。
要详细说明第2步,您的IBDesignable的initWithFrame:方法可能看起来像
- (instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
MyViewController *viewController = [MyViewController alloc] init];
viewController.view.frame = self.bounds;
[self addSubview:viewController.view];
return self;
}
除了这个initWithFrame方法之外,您的视图控制器还可以处理所有布局代码。您可能希望在子视图的prepareForInterfaceBuilder方法中将数据传递给视图控制器。