2015-01-02 16 views
7

Tôi đang cố gắng tạo một lớp IBDesignable có thể có nền trong suốt khi được hiển thị trong Trình tạo giao diện. Cho đến nay, tôi đã nhận được nền đen mờ. Tôi đã thiết lập một bản trình bày đơn giản về vấn đề này:Xóa các khung nhìn IBDesignable có nền đen

Tôi đã đặt UIView trong cảnh này trong Trình tạo giao diện. Bạn không thể nhìn thấy nó bởi vì nền của nó là rõ ràng. Đây là cảnh nên trông như thế nào.

A screenshot of an empty scene in interface builder

Sự khác biệt duy nhất trong ảnh chụp màn hình này là tôi đã thiết lập các lớp xem trước vô hình của chúng tôi để được 'DesignableView'.

A screen shot of an Interface Builder scene with a black box in the middle

Dưới đây là toàn bộ thực hiện của lớp DesignableView:

#import <UIKit/UIKit.h> 

IB_DESIGNABLE 
@interface DesignableView : UIView 
@end 

@implementation DesignableView 
- (void)drawRect:(CGRect)rect { 
    //rendering code goes here 
} 
@end 

Có một cách để cung cấp cho các IBDesignable xem đúng, nền trong suốt?

+0

Nếu bạn không sử dụng 'drawRect:' bạn nên nhận xét; nó ảnh hưởng đến hiệu suất. Đó cũng có thể là vấn đề – Chris

+0

Sự thật là việc triển khai trống 'drawRect: 'là một ý tưởng tồi, tuy nhiên điểm đó không liên quan đến câu hỏi này. Trong ví dụ này, hàm 'drawRect:' trống vì đó là cách đơn giản nhất để tái tạo vấn đề có nền đen trong IB. – BradB

Trả lời

10

Tôi chỉ nhớ cách tôi sửa lỗi này. Bạn cần ghi đè layoutSubviews

- (void)layoutSubviews 
{ 
    [super layoutSubviews]; 

    self.backgroundColor = [UIColor clearColor]; 
} 
+2

Cảm ơn, Chris! Điều này làm việc tuyệt vời. Tôi đã tìm thấy rằng thủ thuật này cũng hoạt động khi lệnh gọi 'self.backgroundColor' được thực hiện trong hàm' preparForInterfaceBuilder', có thể là một nơi thích hợp hơn. – BradB

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