objective-c - ventanas - vidrio inteligente en mexico
¿Cómo se utiliza la intensidad de la oscuridad en una ventana de NS? (2)
¿Cuál es la forma correcta de usar los NSAppearanceNameVibrantDark
Vibrant Dark ( NSAppearanceNameVibrantDark
) o Vibrant Light ( NSAppearanceNameVibrantLight
) con un NSWindow
?
Estoy creando una aplicación y me gustaría ofrecer la nueva apariencia Vibrant Dark como una opción para NSWindow
la aplicación principal. La ventana en sí es una ventana bastante sencilla con una NSToolbar
en la parte superior y una vista de desplazamiento como el área de contenido principal.
Hay mucha información de Apple sobre el uso de las nuevas apariencias de vibración junto con un NSVisualEffectsView
, pero estoy buscando una aclaración sobre cómo usar esas apariencias en una NSWindow
.
En el archivo de encabezado NSAppearance.h
, hay un comentario que indica que las apariencias vibrantes solo se deben configurar en un NSVisualEffectsView
. No hay mención de que sea soportado en NSWindow
.
Los videos de la WWDC hablan sobre asegurarse de que estás usando vistas respaldadas por capas y que estás permitiendo la vibración en tus subvistas cuando usas las nuevas apariencias vibrantes, pero nuevamente, no hay mención de usarlas en una NSWindow
.
El código de muestra de VisualEffectsPlayground tiene un ejemplo de una aplicación similar a Facetime que usa el modo de intensidad de la oscuridad, pero no tiene una barra de herramientas y usa la máscara de contenido completo.
A partir de esa información, hago lo siguiente en NSWindowController''s windowDidLoad
método NSWindowController''s windowDidLoad
mi NSWindowController''s windowDidLoad
:
[self.window.contentView setWantsLayer:YES];
self.window.appearance = [NSAppearance appearanceNamed:NSAppearanceNameVibrantDark];
Y, NSToolbar
, obtengo un NSToolbar
negro con una barra de título de ventana negra. Parece que está funcionando correctamente, pero cuando mi scrollview desplaza su contenido (miniaturas de imágenes), la translucidez estándar debajo de la NSToolbar
y la barra de título de la ventana no están presentes o están presentes al azar. No parece haber ningún patrón. A veces, cuando me desplazo la vista de desplazamiento, el contenido se muestra en el estado "borroso" debajo de la barra de herramientas y la barra de título. Otras veces, cuando me desplazo, la barra de herramientas y la barra de título son solo un negro opaco. (La barra de título y la barra de herramientas aún dibujan sus títulos y botones).
Cuando no solicito una capa para la vista de contenido de la ventana, obtengo más una barra de título gris y un título de ventana en lugar de uno negro "puro". (El color de fondo de mi scrollview puede ser blanco, gris oscuro o negro).
Cualquier ayuda o aclaración sobre cómo configurar correctamente una NSWindow
(que contiene una NSToolbar
y un NSScollView
) para usar las nuevas apariencias de vitalidad sería muy apreciada.
Esto creará una ventana de modo oscuro. Posteriormente, todo lo que esté en la ventana (incluidas la barra de título, la barra de herramientas e incluso las hojas de diálogo) se volverá oscuro.
let USE_DARK_MODE = true
if USE_DARK_MODE {
window.appearance = NSAppearance(named: NSAppearanceNameVibrantDark)
window.invalidateShadow()
}
invalidateShadow
no parece necesario, pero a veces la sombra no funciona correctamente si no se tiene. (OS X 10.10)
Pensé que puedes subclase NSWindowController
. Establezca la clase para su controlador de ventana en IB a su NSWindowController
personalizado. Después de eso en la función windowDidLoad
self.window?.titlebarAppearsTransparent = true
También configure "Vista de contenido de tamaño completo" en el inspector de atributos para NSWindow
.