NSTabView con color de fondo

Como se discutió en otra parte, NSTabView no tiene un método setBackgroundColor y la subclasificación de NSTabView y el uso de drawRect para controlarlo ya no funciona, ya que no pinta el 10% superior, el bit justo debajo del botón de control segmentado.

Ahora estoy un poco sorprendido por la cantidad de trabajo que tuve que resolver para resolver esto; ve

code:https: //github.com/dirkx/CustomizableTabView/blob/master/CustomizableTabView/CustomizableTabView.

y me pregunto si fui por el camino equivocado. Y cómo hacerlo mejor y más simple:

The NSSegmentStyleTexturedSquare parece darme un control segmentado semitransparente. Lo que significa que necesito hacer un trabajo adicional para ocultar las líneas del bisel (línea 240, 253).

Hay una mejor manera de hacer esto ? Es decir. ¿negar su transparencia?

o ¿hay alguna manera de usar el botón de selección segmentado real / original?

Me parece que los colores que necesito, como [NSColor windowBackgroundColour] no están configurados para nada útil (es decir, que es transparente), así que ahora los codifico (líneas 87, 94).

Hay una mejor manera de hacer esto

Creo que necesito una gran cantidad de métodos suaves para mantener las cosas sincronizadas (líneas 128, 134, etc.).

¿Se puede evitar esto?

Me parece que imitar la astucia en el cambio de escala significa que necesito mantener un ojo constante en el cuadro de control segmentado y eliminarlo / cambiar su tamaño. E incluso entonces, no es tan bueno como el @ origin

¿Hay una mejor manera de hacer esto que la línea 157, es decir, escuchar sobre el cambio de tamaño? ¿En lugar de hacerlo todo el tiempo?

SegementControl se desvanece cuando se quita el foco de la ventana, a diferencia del McCoy real.

¿Se puede prevenir fácilmente? ¿Hay alguna forma barata de rastrear esto?

¿O este es el enfoque incorrecto, y debería centrarme en un agujero transparente aquí, y dejar que el NSTabViewItem dibuje un fondo? Pero en cualquier caso, entonces todavía tengo el problema con la caja de Control Segementado, o hay alguna forma de hacer que vuelva a ser el predeterminado.

al intentar esto: me quedo atascado en los 20-30 píxeles superiores que se dibujan en el color de fondo de las ventanas 'reales', que es 'transparente', y por lo tanto el color no se ejecutará hasta la parte superior o detrás de la barra de segmento y hasta el bisel, pero detenga unos 8 píxeles debajo de la parte inferior de los controles del segmento.

Feedback apreciado, ya que esto se siente muy lejos / subóptimo para cosas tan simples, muchas gracias. Brownie señala por piratear / bifurcar el código github :) :) :) Como una línea de código en ejecución dice más de mil palabras.

Dw.

Respuestas a la pregunta(3)

Su respuesta a la pregunta