Kể từ khi mẫu của một ứng dụng OS X trong Xcode có vẻ là tương tự như một mẫu ứng dụng rỗng, sau đây được sử dụng để thêm một cái nhìn và một nút (cố gắng không sử dụng giao diện người xây dựng cho bây giờ):Làm cách nào để thêm NSView vào NSWindow trong ứng dụng Cocoa?
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
NSView *view = [[NSView alloc] initWithFrame:NSMakeRect(100, 100, 100, 100)];
view.layer.backgroundColor = [[NSColor yellowColor] CGColor];
[self.window.contentView addSubview:view];
NSRect frame = NSMakeRect(10, 40, 90, 40);
NSButton* pushButton = [[NSButton alloc] initWithFrame: frame];
pushButton.bezelStyle = NSRoundedBezelStyle;
[self.window.contentView addSubview:pushButton];
NSLog(@"subviews are %@", [self.window.contentView subviews]);
}
Mã tương tự trên iOS nên đã tạo ra một hộp màu vàng và một nút, nhưng mã ở trên chỉ tạo ra một nút, nhưng chế độ xem sẽ không hiển thị. Có điều gì sai với mã ở trên không và cách làm cho nó hiển thị chế độ xem với nền màu vàng?
NSView không có thuộc tính backgroundColor, có vẻ như vậy. Tôi rất nhớ 'UIKit' ...! –
Câu trả lời này là xấu. Bạn được [nói rõ ràng] (http://developer.apple.com/library/mac/documentation/Cocoa/Tham khảo/ApplicationKit/Lớp học/NSView_Class/Tham khảo/NSView.html # // apple_ref/doc/uid/20000014-SW61) không chạm vào lớp sao lưu ở chế độ xem được hỗ trợ lớp (a xem nơi bạn đã sử dụng '-setWantsLayer:' mà không cần gọi '-setLayer:' trước tiên). Từ tài liệu: ** Khi sử dụng chế độ xem lớp được sao lưu, bạn không bao giờ nên tương tác trực tiếp với lớp ** –
ý của bạn, trước tiên sẽ khởi tạo CALayer, đặt chế độ xem thành view.layer và sau đó đặt wantLayer thành YES và đặt màu nền ? –