Podklasa NSButtonCell i przypisz ją do przycisku CELL w IB (nie bezpośrednio PRZYCISK BUTTONOWY -> o jeden poziom głębiej). W podklasie realizować następujące i modifiy rozmiar, czcionkę i kolor jak chcesz:
- (NSAttributedString*)attributedTitleForString:(NSString*)string
{
// Colors
NSColor *disabledColor = [NSColor grayColor];
NSColor *enabledColor = [NSColor redColor];
// Font
NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init];
[style setAlignment:NSLeftTextAlignment];
NSFont *font = [NSFont systemFontOfSize:11];
// Enabled
NSDictionary *enabledAttrsDictionary = [NSDictionary dictionaryWithObjectsAndKeys:
enabledColor, NSForegroundColorAttributeName,
style, NSParagraphStyleAttributeName,
font, NSFontAttributeName,
nil];
NSAttributedString* enabledTitle = [[NSAttributedString alloc]initWithString:string attributes:enabledAttrsDictionary];
// Disabled
NSDictionary *disabledAttrsDictionary = [NSDictionary dictionaryWithObjectsAndKeys:
disabledColor, NSForegroundColorAttributeName,
style, NSParagraphStyleAttributeName,
font, NSFontAttributeName, nil];
NSAttributedString* disabledTitle = [[NSAttributedString alloc]initWithString:string attributes:disabledAttrsDictionary];
if (![self isEnabled])
return disabledTitle;
else
return enabledTitle;
}
EDIT: Działa tylko jeśli setWantsLayers jest fałszywa
mógłbyś zastąpić właściwości przycisku, a nie wyłączając go - ale wyłączyć oddziaływanie może , lub po prostu zmienić kolor/obramowanie przycisku, aby zachować kolor tekstu? Zastanawiam się, czy wypróbowałeś tę poprawkę, ale wiem, co mówisz. – Luke
mmmm .. myślę, że mogę ustawić obraz/alternatywny obraz na tę samą "wyłączoną" skórę, aby użytkownik zrozumiał, że jest to wyłączone. Ale spowoduje to, że kod będzie bardzo brzydki - musiałbym sprawdzić każdą funkcję działania, jeśli przycisk jest wyłączony lub nie. –
W systemie iOS mogę to zrobić: myButton.userInteractionDisabled = YES, a następnie ustawić alfa, aby nadać mu wygląd być wyłączonym. Wyobrażam sobie, że możesz zrobić coś podobnego z twoim NSButtonem. Żeby potwierdzić, po prostu ustawiłeś właściwość enabled na NIE, skąd pochodzi twój problem z kolorem tekstu? – Luke