2015-09-30 17 views
8

Tôi mới phát triển iOS. Tôi đang sử dụng nhanh chóng và tôi muốn thiết kế quan điểm của mình theo lập trình nhưng tôi muốn sử dụng IBDesigner và IBInspectable để tăng tốc quá trình thiết kế của tôi.Sử dụng IBDesignable và IBInspectable với UIViewController

Hiện tại tôi có bộ điều khiển chế độ xem có nhiều nút và nhãn khác nhau trên đó. Đây là một đoạn mã của tôi:

@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() 
} 

Câu hỏi của tôi bây giờ là làm cách nào để sử dụng trình tạo giao diện với IBDesignable và IBInspectable? Tôi có cần phải thêm một .xib? Tôi thấy một số câu hỏi khác đề cập đến rằng tôi cần phải sử dụng một sân chơi, nhưng tôi đã cố gắng để tránh sử dụng đó, tôi về cơ bản muốn biết nếu nó có thể xem toàn bộ viewcontroller của tôi?

Cảm ơn bạn,

+0

@IBInspectable Hướng dẫn: https://iosdevcenters.blogspot.com/2017/07/how-to-use-ibinspectable-in-swift-30.html –

Trả lời

3

Có một giải pháp để kiểm tra bố cục bộ điều khiển chế độ xem của bạn bằng IBDesignable.

  1. Layout điều khiển xem của bạn trong mã cũng giống như bạn muốn làm như thường lệ
  2. Tạo một lớp con IBDesignable UIView và thêm quan điểm điều khiển xem như là một subview.
  3. Tạo một xib và thiết lập các lớp quan điểm của mình đến lớp con bạn đã tạo ở bước 2

Để xây dựng trên bước 2, initWithFrame của IBDesignable của bạn: Phương pháp có thể trông giống như

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

Vì vậy, ngoài này Phương thức initWithFrame, tất cả mã bố trí của bạn có thể được xử lý bởi bộ điều khiển khung nhìn của bạn. Bạn có thể muốn chuyển dữ liệu đến bộ điều khiển xem của bạn trong phương thức PrepareForInterfaceBuilder của khung nhìn của bạn.

+0

Nếu bạn đang thêm UIView của UIViewController, bạn đang mất vòng đời của ViewController chẳng hạn như viewWill và DidAppear. Đó không phải là quá mức cần thiết phải không? – OhadM

3

Bạn không thể sử dụng IBDesignable với một lớp học khác mà không được kế thừa từ UIView hoặc NSView. Kiểm tra Hướng dẫn bởi Apple về IBDesignable:

Bạn có thể sử dụng hai attributes- khác nhau @ IBDesignable và @ IBInspectable-để cho phép trực tiếp, thiết kế giao diện tùy chỉnh tương tác trong Interface Builder. Khi bạn tạo một giao diện tùy chỉnh được thừa kế từ lớp UIView hoặc lớp NSView, bạn có thể thêm các thuộc tính @IBDesignable ngay trước khi khai báo lớp

Nguồn: Live Rendering

một

Các vấn đề liên quan