Tôi đang cố gắng thực hiện điều khiển tùy chỉnh cập nhật trực tiếp trong Trình tạo giao diện bằng cách sử dụng tùy chọn IB_DESIGNABLE mới được mô tả here.xcode 6 IB_DESIGNABLE- không tải tài nguyên từ gói trong Trình tạo giao diện
- (void)drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
CGRect myFrame = self.bounds;
CGContextSetLineWidth(context, 10);
CGRectInset(myFrame, 5,5);
[[UIColor redColor] set];
UIRectFrame(myFrame);
NSBundle *bundle = [NSBundle mainBundle];
NSString *plistPath;
plistPath = [bundle pathForResource:@"fileExample" ofType:@"plist"];
UIImage *tsliderOff = [UIImage imageNamed:@"btn_slider_off.png"];
[tsliderOff drawInRect:self.bounds];
}
Khi tôi chạy trong mô phỏng, tôi nhận được một hộp màu đỏ với hình ảnh của tôi ở trung tâm (như dự kiến):
Nhưng khi tôi cố gắng sử dụng giao diện Builder, nó chỉ xuất hiện như một hộp màu đỏ (không có hình ảnh ở giữa):
Khi tôi gỡ lỗi: Editor-> Debug Selected Views, nó cho thấy mọi thứ được tải từ gói là không. PlistPath và tsliderOff đều xuất hiện dưới dạng nil.
Tôi đảm bảo rằng btn_slider_off.png đã được đưa vào các mục tiêu-> myFrameWork-> Giai đoạn xây dựng-> Sao chép tài nguyên.
Bất kỳ ý tưởng nào tại sao Trình tạo giao diện không nhìn thấy tệp png trong khi chỉnh sửa, nhưng hiển thị ok khi chạy? "Tạo ra một giao diện tùy chỉnh mà ám trong Interface Builder" là một chút giới hạn nếu tôi không thể tải bất kỳ hình ảnh để render ...
chỉnh sửa dựa trên giải pháp bởi rickster
rickster chỉ tôi đến giải pháp - vấn đề là các tệp không tồn tại trong mainBundle, chúng nằm trong [NSBundle bundleForClass: [self class]]; Và có vẻ như [UIImage imageNamed: @ "btn_slider_off.png"] tự động sử dụng mainBundle.
Mã sau hoạt động!
#if !TARGET_INTERFACE_BUILDER
NSBundle *bundle = [NSBundle mainBundle];
#else
NSBundle *bundle = [NSBundle bundleForClass:[self class]];
#endif
NSString *fileName = [bundle pathForResource:@"btn_slider_off" ofType:@"png"];
UIImage *image = [UIImage imageWithContentsOfFile:fileName];
[image drawInRect:self.bounds];
Liệu này vẫn áp dụng đối với Xcode 6.0.1, các lớp học IB_DESIGNABLE mà không phải là bên trong một khuôn khổ ? Tôi không thể làm cho nó hoạt động được. Điều gì đó tồi tệ hơn, tôi không thể gỡ lỗi chế độ xem, khi tôi cố gắng gỡ lỗi nó bằng điểm ngắt Xcode gặp sự cố với quả bóng quay tròn của cái chết. –