2017-09-22 4 views
0

Ich möchte die Farben der Bildlaufleiste für meine Mac-Anwendung ändern. Insbesondere möchte ich die Hintergrundfarbe ändern.Farben der Bildlaufleiste ändern

Meine Anwendung basiert auf Qt, daher wird die Anwendung bereits erstellt und ausgeführt. Ich kann die NSView für eine QWidget bekommen.

Ich weiß, ich kann Stylesheets in Qt verwenden, um das Aussehen von Bildlaufleisten zu ändern, aber ich würde lieber eine anwendungsweite Hintergrundfarbe für die Standard-Bildlaufleisten festlegen.

Ich versuchte [[NSApplication sharedApplication] keyWindow].backgroundColor = [NSColor grayColor]; aber Scrollbalken blieb hell weiß.

Antwort

0

Ich nehme an, dass die Bildlaufleiste auf der rechten Seite this screenshot ist, was Sie suchen.

In diesem Fall können Sie mit Swift nicht viel tun, um diese Farbe zu ändern, da sie vom Betriebssystem definiert wird.

Ich verstehe, dass diese Lösung nicht das ist, was Sie suchen, da es nicht primär Code-orientiert ist, aber soweit ich weiß, gibt es keinen anderen Weg. Sie müssen zuerst ThemeEngine herunterladen, um .car-Dateien zu ändern. here.

  1. zu /System/Library/CoreServices/SystemAppearance.bundle/Contents/Resources gehen und die Datei mit dem Namen „System Appearance.car“ in einem beliebigen Verzeichnis, das Sie Erlaubnis zu schreiben kopieren.
  2. Suchen Sie nach dem Bildelement mit dem Namen "ScrollBarOverlay_Track", und ersetzen Sie die Standardbildlaufleisten-Hintergrundbilder durch Ihre eigenen. Ich habe Photoshop zum Bearbeiten verwendet.
  3. Speichern Sie Ihre geänderte Version von SystemAppearance.car und stellen Sie sicher, dass Sie sie in den Ordner "Ressourcen" Ihrer App einfügen.
  4. Schreiben Sie den folgenden Code bei der Initialisierung des Fensters:

    window.appearance = NSAppearance(appearanceNamed: NSAppearance.Name(rawValue: "SystemAppearance"), bundle: nil) 
    

    Dies wird das Aussehen des Fensters ändern. Ersetzen Sie window durch Ihr Fenster, wenn Sie es anders benannt haben.

Hoffe, das hilft.

+0

Danke für Ihre Antwort; Es hat nicht für mich funktioniert. Ich habe die Bilder von ThemeEngine in ein Finder-Fenster gezogen und PNGs kopiert. Ich bearbeitete sie und zog sie zurück, dann speicherte ich eine neue Auto-Datei. Dann habe ich nach Resources kopiert und 'NSView * my_view = (NSView *) (w-> winId()); NSWindow * my_win = [my_view window]; [my_win setAppearance: [[NSAppearance alloc] initWithAppearanceNamed: @ "SystemAppearance" Bündel: nil]]; ' – koan