objective c - pages - Añadir subvista a la barra de título de NSWindow
ocultar barra de menu mac (4)
Asigna tu ventana a la vista propia. y luego agregue la subvista con el marco más tarde proporcione la funcionalidad requerida
Quiero crear una barra de herramientas de Windows personalizada pero sin usar una NSToolbar real (porque en algunos casos no se comporta bien para mis necesidades y no puedo usar el estilo que quiero), por lo tanto, debo agregar una subvista al Barra de título de la ventana. Debe parecerse a lo siguiente:
Una posible manera sería:
[[[_window contentView] superview] addSubview:_titlebarView];
pero esto tiene el problema, que provoca una advertencia en Yosemite ( NSWindow warning: adding an unknown subview: <NSView: 0x608000122b20>
), por lo que no parece ser la forma correcta de hacerlo.
Actualmente estoy agregando la vista de la barra de herramientas a la vista de la barra de título:
[[[_window standardWindowButton:NSWindowCloseButton]
superview] addSubview:_titlebarView];
pero esto se siente mal también.
Como mi aplicación solo se enfoca en OS X 10.10 (Yosemite), estaría bien para mí usar API solo para Yosemite, así que eché un vistazo a NSTitlebarAccessoryViewController
y logré subclasificar con éxito y usarlo con el NSWindow
de addTitlebarAccessoryViewController:
. Con este enfoque queda un problema, los valores posibles para layoutAttribute
son:
-
NSLayoutAttributeBottom
Agrega la vista a la parte inferior de la barra de título de la ventana, a la vez que conserva la altura de la vista. -
NSLayoutAttributeRight
Agrega la vista a la derecha de la barra de título de la ventana, recortando la vista a la altura de la barra de título.
El NSLayoutAttributeBottom
no es adecuado para mí, ya que necesito colocar las cosas en la parte superior de la barra de título de la ventana (ver captura de pantalla más arriba) y centrar los semáforos. NSLayoutAttributeRight
sería exactamente lo que necesito, pero no puedo encontrar una manera de aumentar la altura de la barra de título, por lo que la vista se recorta a la altura de la barra de título, por lo que es inútil para mí. (Nota: usar una ventana con textura y cambiar el borde del contenido no funciona, ya que no cambiará la altura real de la barra de título)
cual es la manera recomendada para hacer esto? Preferiría ir con las API oficiales y usar el enfoque de AccessoryViewController, si fuera posible tener una vista más grande que la barra de título predeterminada.
Gracias @ePirat
Agregar subvistas a su barra de título, sería lo mismo que hacer
[[[_window standardWindowButton:NSWindowCloseButton] superview] addSubview:_customTitlebarView];
es solo un NSToolBar. en Yosemite, cuando window.title.titleVisibility = .Hidden
, el NSToolBar se convertirá en la barra de título
WAYAppStoreWindow puede lograr lo que estás buscando. Se construyó explícitamente para evitar la advertencia de subvista en Yosemite, especifique una altura de barra de título de ventana personalizada y agregue subvistas a la barra de título.