Dal momento che il modello di una X app OS in Xcode sembra essere simile a un modello di applicazione vuota, il seguente viene utilizzata per aggiungere una vista e un pulsante (cercando di non usare Interface Builder per ora):Come aggiungere un NSView a NSWindow in un'app 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]);
}
Codice simile su iOS dovrebbe aver prodotto una casella gialla e un pulsante, ma il codice sopra produce solo un pulsante, ma la vista non verrà visualizzata. C'è qualcosa di sbagliato nel codice sopra e come farlo mostrare la vista con uno sfondo giallo?
NSView non ha una proprietà backgroundColor, a quanto pare. Mi manca "UIKit' ...! –
Questa risposta è male. Sei [esplicitamente detto] (http://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSView_Class/Reference/NSView.html # // apple_ref/doc/uid/20000014-SW61) per non toccare il livello di supporto in una vista con strato (a guarda dove hai usato '-setWantsLayer:' senza chiamare '-setLayer:' prima). Dai documenti: ** Quando utilizzi le viste supportate dal livello, non devi mai interagire direttamente con il livello ** –
, vuoi prima istanziare un CALayer, impostarlo su view.layer, quindi impostare wantLayer su YES e impostare il colore di sfondo ? –