2015-04-22 74 views
9

我注意到有一天我的一個網頁看起來很醜。頁面上的按鈕看起來是totally different,這取決於它們是包含一行文本還是兩行文本。如何在NSTexturedSquareBezelStyle按鈕周圍繪製邊框

經過一番挖掘,我發現典型的按鈕使用NSRoundedBezelStyle,但它有一個固定的高度。因此,如果文本要打包,Firefox(和Chrome和Safari)將會有change the button to use NSShadowlessSquareBezelStyle,這可以有一個可變的高度。我想請這些瀏覽器的維護者改變這一點,並正在研究最好的選擇。

在找到already-filed bug並做了一些閱讀之後,我建議他們可以使用NSTexturedSquareBezelStyle來代替。事實證明,在小牛隊中,它看起來與NSRoundedBezelStyle按鈕幾乎完全一樣。在約塞米蒂一樣,除了它沒有邊界。更改setBordered不起作用。

所以我的問題,代表各地的瀏覽器開發者:是否可以繪製一個NSTexturedSquareBezelStyle按鈕的邊框?或者,所有瀏覽器供應商都錯過了另一種解決方法嗎?

回答

3

重寫回答

,我沒有看到一個NSTexturedSquareBezelStyle按鈕顯示了無國界的優勝美地:

NSTexturedSquareButonStyle button under Yosemite.

這是一個樣按鈕從Interface Builder的調色板拖動。我鼓勵你發佈你的代碼,因爲它可能是你在代碼中生成你的按鈕。這是我自己來生成相同的按鈕代碼:

NSButton * anotherButton = [[NSButton alloc] initWithFrame:NSMakeRect(10.0, 10.0, 100.0, 100.0)]; 
anotherButton.bezelStyle = NSTexturedSquareBezelStyle; 
anotherButton.title = @"Line 1\nLine 2"; 

證明:

Same button created with code.

如果你看到約塞米蒂下不同的結果,你需要發佈您的代碼。猜測,您可能正在初始化您的按鈕-init而不是-initWithFrame:,這會導致各種繪圖問題,因爲NSButtonNSView,因此其指定的初始化程序爲-initWithFrame:。只是一個猜測。

+0

有一個非常輕微的邊界,但不足以提供白色背景或淺色圖像的對比度。在小牛隊中,這個按鈕看起來就像一個正常的按鈕,這正是我所希望的。令人沮喪的是,蘋果在他們的API中沒有解決這樣一個明顯的限制。 – miken32

+0

除了能夠繼承按鈕單元並覆蓋其繪圖,當然。 ;-) –

相關問題