NSTabViewItem mit Hintergrundfarbe

  • NSTabViewItem mit Hintergrundfarbe

    Hallo,

    ist es möglich ein NSTabViewItem mit einer Hintergrundfarbe zu versehen?
    Mein Problem ist, dass meine View in meinem Tab ein Outputfenster enthält, welches aber nicht bis zum Rand gehen kann.
    Problem des ganzen ist, dass beim vergrößern des Fensters sich die Output-Textview im Tab leicht verschiebt...Daher hatte ich die Idee des einfärben vom Tab.

    Im ersten Screenshot sieht man wie sich meine TextView beim vergrößern des Programms verschoben hat...Diesen kleinen unterschied wollte ich durch das einfärben des Tabs ausgleichen.


    Danke!
  • Der Screenshot ist etwas klein geraten, also ich kann da nicht viel erkennen.

    Du kannst aber den Hintergrund durch Subclass von NSTabViewItem und Anpassen der folgenden Methode den Hintergrund ändern.
    Problem wird dabei wohl werden die Ecken rund zu gestallten, und auf den Wechsel der Farbe beim Tab-Click muss man auch reagieren.

    Quellcode

    1. - (void)drawLabel:(BOOL)shouldTruncateLabel inRect:(NSRect)tabRect{
    2. [[NSColor greenColor] set];
    3. [NSBezierPath fillRect:tabRect];
    4. [self.label drawInRect:tabRect withAttributes:nil]; // Text in NSRect schreiben
    5. }
    Manchmal schleiche ich mich mitten in der Nacht an meinen Wecker heran und brülle: "NA, WIE FÜHLT SICH DAS AN!!!"
  • Okay, danke dir!

    Glaube dann ist es einfacher die Positionierung der Elemente zu korrigieren oder? ..Das ist ja mein Ursprungsproblem weswegen ich überhaupt auf die Idee mit der Hintergrundfarbe gekommen bin.


    Anbei mal ein paar mehr Screenshots zu dem Größenprobem; ggf. hilft das.
  • Restliche Bilder.

    Im vorherigen Post kann man an den ersten beiden Bildern gut erkennen wie sich in der Splitview das WebView wie auch die TextView verschieben sobald das Fenster sich von der Größe her geändert hat.
    Da einer eine Idee was ich da falsch mache?
    ..Dann spare ich mir das einfärben des Hintergrunds.


    Danke!
  • Ich verstehs immer noch nicht ?( . Kannst du mal Screenshots vom kompletten Fenster machen vorher und nachher. Arbeitest du mit Constraints? Wenn nicht,vielleicht schieben die Fenster sich übereinander wenn du vergrößerst.
    Manchmal schleiche ich mich mitten in der Nacht an meinen Wecker heran und brülle: "NA, WIE FÜHLT SICH DAS AN!!!"
  • An den nachfolgenden Bildern kann man sehen wie sich das innere Fenster verschiebt.
    Autolayout habe ich deaktiviert, da mir gesagt wurde, dass Autolayout bei Splitviews die wiederum Tabs enthalten Probleme machen können..
    Positionierung sieht man oben an den Bildern.

    Mir geht es um den kleinen Abstand der rot markiert ist...dieser entsteht sobald ich das Fenster in die Breite ziehe. :(
  • Ich vermute ja immer noch das beim Vergrößern die TabView so verschoben wird, das deren Ränder sichtbar werden. Normalerweise ist diese nämlich oben abgerundet und bei dir auf dem erste Bild (grün) eckig.
    Lad doch mal das Projekt hoch wenn dir das soooooo wichtig ist ;)
    Manchmal schleiche ich mich mitten in der Nacht an meinen Wecker heran und brülle: "NA, WIE FÜHLT SICH DAS AN!!!"
  • MausD schrieb:

    Ich vermute ja immer noch das beim Vergrößern die TabView so verschoben wird, das deren Ränder sichtbar werden.

    Das sehe ich genau so. Vor der Größenänderung wird der TabView durch den Superview beschnitten.

    @err0r
    Der Abstand, den Du nach der Größenänderung siehst, ist der "BezelBorder" des NSTabView. Den bekommst Du so einfach nicht weg. Da musst Du ein wenig tricksen. Du kannst den tabViewType auf NSNoTabsNoBorder setzen und die Tabs oben mit einem NSSegmentedControl simulieren. Optisch sieht das dann aber immer noch nicht Mac-like aus, aber bestimmt besser als jetzt.

    Michael