So zeichnen Sie einen Rahmen um eine NSTexturedSquareBezelStyle-Schaltfläche

9

Ich bemerkte neulich, dass eine meiner Webseiten hässlich aussah. Die Schaltflächen auf der Seite sahen völlig anders aus , je nachdem, ob sie eine oder zwei Textzeilen enthielten.

Nach einigem Graben habe ich gelernt, dass die typische Schaltfläche NSRoundedBezelStyle verwendet, aber sie hat eine feste Höhe. Wenn der Text also umbrochen wird, wird Firefox (und Chrome und Safari) Ändern Sie die Schaltfläche, um NSShadowlessSquareBezelStyle zu verwenden, die eine variable Höhe haben kann. Ich möchte die Betreuer dieser Browser dazu auffordern, dies zu ändern und suche nach der besten Alternative.

Nachdem ich den bereits archivierten Fehler gefunden und ein wenig gelesen hatte, schlug ich vor, dass sie vielleicht verwenden könnten NSTexturedSquareBezelStyle stattdessen. Es stellt sich heraus, dass es in Mavericks fast genau so aussieht wie ein NSRoundedBezelStyle Button. Gleiches in Yosemite, außer dass es keine Grenze hat. Das Ändern von setBordered hat keine Auswirkungen.

Also meine Frage, im Namen von Browser-Entwicklern überall: ist es möglich, eine NSTexturedSquareBezelStyle -Schaltfläche mit einem Rahmen zu zeichnen ? Oder gibt es einen anderen Weg, den alle Browser-Anbieter verpasst haben?

    
miken32 22.04.2015, 19:03
quelle

1 Antwort

3

Umgeschriebene Antwort

Ich sehe keine NSTexturedSquareBezelStyle -Schaltfläche, die randlos in Yosemite angezeigt wird:

Dies ist eine Schaltfläche, die aus der Palette in Interface Builder gezogen wird. Ich ermutige Sie, Ihren Code zu posten, da Sie wahrscheinlich Ihre Schaltfläche im Code generieren. Hier ist mein eigener Code zum Generieren derselben Schaltfläche:

%Vor%

Beweis:

Wenn Sie unter Yosemite andere Ergebnisse sehen, müssen Sie Ihren Code veröffentlichen. Bei einer Schätzung initialisieren Sie möglicherweise Ihre Schaltfläche mit -init anstelle von -initWithFrame: , was zu allen Arten von Zeichnungsproblemen führen kann, da NSButton ein NSView ist und daher der angegebene Initialisierer -initWithFrame: ist. Nur eine Schätzung.

    
Joshua Nozzi 30.04.2015 21:35
quelle

Tags und Links