what sierra new mac human high features developer apple cocoa interface-builder

cocoa - sierra - xcode ios 12



Cómo darle a NSWindow un color de fondo particular (4)

Siempre que solo desee cambiar el color de fondo del área de contenido, no el marco y la barra de herramientas, no necesita subclasificar NSWindow . Lo que debe hacer es NSView subclase NSView y hacer que su vista personalizada dibuje el color deseado, y luego establecer una instancia de esa clase como vista de contenido de la ventana.

Alternativamente, puede salirse con la suya estableciendo un NSImageView sin NSImageView o NSColorWell como la vista de contenido, pero no estoy seguro de que Apple signifique que esos tengan subvistas. De lo contrario, tendrías que dejar tu ventana vacía.

Dicho esto, debe estar realmente seguro de que un color de fondo personalizado es apropiado. Casi siempre, no lo es, y debes quedarte con la apariencia de Aqua o HUD.

Estoy escribiendo una aplicación de cacao que tiene una NSWindow. Quiero cambiar el color de fondo de la ventana a un color específico. Pero las propiedades de ventana en el inspector solo brindan una alternativa de "Ventana texturizada". ¿Cómo puedo hacer que el color de la ventana sea el deseado?


Intenta llamar al método de instancia setBackgroundColor: con un color en tu instancia de ventana. Lo que hay en un nombre.. ;)

Me gusta esto:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification { // Option 1 [self.window setBackgroundColor: NSColor.whiteColor]; // Option 2 - using dot syntax self.window.backgroundColor = NSColor.whiteColor; }


La forma más sencilla de cambiar el fondo de la ventana es configurarlo directamente en su archivo .xib.

Sin código en absoluto:

  1. Seleccione su ventana (la clase NSWindow debe aparecer en el campo Clase)
  2. Haga clic en el botón [+] debajo de los atributos de tiempo de ejecución definidos por el usuario
  3. Escriba "backgroundColor" y seleccione Color

Debe subclase NSWindow para cambiar el fondo y luego anular la implementación de

- (id)initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)styleMask backing:(NSBackingStoreType)bufferingType defer:(BOOL)flag

Como ejemplo, vea HUDWindow de Mat Gemmell: http://mattgemmell.com/2006/03/12/hudwindow