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?
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.
Tags und Links objective-c macos cocoa