Estoy buscando la mejor manera de cambiar el backgroundColor
de un NSView
. También me gustaría poder establecer la alpha
máscara adecuada para NSView
. Algo como:
myView.backgroundColor = [NSColor colorWithCalibratedRed:0.227f
green:0.251f
blue:0.337
alpha:0.8];
Noto que NSWindow
tiene este método, y no soy un gran fan de los NSColorWheel
u NSImage
opciones de fondo, pero si son los mejores, dispuestos a utilizar.
objective-c
macos
background-color
nsview
BadPirate
fuente
fuente
NSRectFill
utilizaNSCompositeCopy
para hacer el relleno, por lo que golpeará cualquier cosa detrás de él, no se compondrá en la parte superior de las vistas de antepasados. Para rellenos con un color transparente parcial (o totalmente), useNSRectFillUsingOperation
developer.apple.com/mac/library/documentation/Cocoa/Reference/… con laNSCompositeSourceOver
operación.Una solución fácil y eficiente es configurar la vista para usar una capa Core Animation como su almacén de respaldo. Luego puede usar
-[CALayer setBackgroundColor:]
para establecer el color de fondo de la capa.¡Eso es!
fuente
setLayer:
osetWantsLayer:
rompe cualquier WebView que tenga en su aplicación de maneras muy creativas! (Incluso en diferentes ventanas ...)setWantsLayer:
se define: al usar vistas respaldadas por capas, nunca debe interactuar directamente con la capa . El orden de cuándosetWantsLayer:
ysetLayer:
se llama es relevante.Si eres un amante del guión gráfico, esta es una forma en que no necesitas ninguna línea de código .
Añadir
NSBox
como una subvista a NSView y ajuste el marco de NSBox de la misma manera con NSView.En Storyboard o XIB, cambie la posición del título a Ninguno, el tipo de cuadro a Personalizado , el Tipo de a "Ninguno" y el Color del borde a lo que desee.
Aquí hay una captura de pantalla:
Este es el resultado:
fuente
Si primero estableceWantsLayer en YES, puede manipular directamente el fondo de la capa.
fuente
Creo que descubrí cómo hacerlo:
fuente
CGContextFillRect(context, NSRectToCGRect(dirtyRect));
¿Puedes editar tu respuesta?Revisé todas estas respuestas y ninguna de ellas funcionó para mí desafortunadamente. Sin embargo, encontré esta forma extremadamente simple, después de aproximadamente una hora de búsqueda :)
fuente
editar / actualizar: Xcode 8.3.1 • Swift 3.1
uso:
fuente
Mejor solución :
fuente
En Swift:
fuente
Use NSBox, que es una subclase de NSView, que nos permite diseñar fácilmente
Swift 3
fuente
Sin duda la forma más fácil, también compatible con los Activos de conjunto de colores:
Rápido :
Objetivo-C :
Interface Builder :
Agregar un atributo definido por el usuario
backgroundColor
en el generador de interfaces, de tipoNSColor
.fuente
Probé lo siguiente y funcionó para mí (en Swift):
fuente
En Swift 3, puede crear una extensión para hacerlo:
fuente
Echa un vistazo a RMSkinnedView . Puede establecer el color de fondo de NSView desde Interface Builder.
fuente
En Swift puedes subclasificar NSView y hacer esto
fuente
Solo pequeña clase reutilizable (Swift 4.1)
fuente
Simplemente configúrelo
backgroundColor
en la capa (después de respaldar la capa de vista).fuente
Esto admite cambiar la apariencia de todo el sistema (activar o desactivar el modo oscuro) mientras se ejecuta la aplicación. También puede establecer el color de fondo en Interface Builder, si primero establece la clase de la vista en BackgroundColorView.
fuente