2011-06-18 29 views
5

Khi tôi đặt các nút của mình thành tắt, văn bản trở nên xám (màu đen trước đó). Trong cửa sổ của tôi, kết quả là văn bản không thể đọc được khi nút bị tắt.Có cách nào để ngăn văn bản chuyển sang màu xám khi tôi tắt một nút không?

Tôi đã xem toàn bộ tài liệu của NSButton/NSButtonCell/NSCell/NSControl, nhưng tôi không tìm thấy cách nào để giữ văn bản màu đen. Bạn có biết làm thế nào tôi có thể làm điều đó?

+0

bạn có thể ghi đè lên thuộc tính của nút chứ không phải vô hiệu hóa nó - nhưng vô hiệu hóa sự tương tác có lẽ hoặc chỉ thay đổi màu/đường viền của nút để nó giữ màu văn bản của bạn? Chỉ cần tự hỏi nếu bạn đã cố gắng sửa chữa này, tôi biết những gì bạn đang nói mặc dù. – Luke

+0

mmmm .. tôi đoán tôi có thể thiết lập hình ảnh/hình ảnh thay thế cho cùng một "khuyết tật" da để người dùng sẽ hiểu rằng điều này bị vô hiệu hóa. Nhưng nó sẽ làm cho mã rất xấu xí - tôi sẽ phải kiểm tra trong mỗi chức năng hành động nếu nút bị vô hiệu hóa hoặc không –

+0

Trong iOS, tôi chỉ có thể làm điều này: myButton.userInteractionDisabled = YES và sau đó thiết lập alpha để cho nó sự xuất hiện của bị vô hiệu hóa. Tôi tưởng tượng bạn có thể làm điều gì đó tương tự với NSButton của bạn. Chỉ cần xác nhận, bạn chỉ cần đặt thuộc tính được bật thành NO, đây là nơi vấn đề màu văn bản của bạn đến từ đâu? – Luke

Trả lời

1

Bạn có thể đặt thuộc tính nút (phông chữ, màu) cho mỗi trạng thái trong IB. Vì vậy, sẽ thiết lập màu sắc văn bản của nó cho nhà nước tàn tật để giúp đỡ màu đen?

+0

Tôi không thấy tùy chọn này trong IB. Tôi sử dụng xcode 4 có sẵn trong IB –

+0

Ca cao không phải là ca cao. – Kappe

-1

Mở liên lạc cacao có một API cho rằng:

[myButton setTextColor: [UIColor blackColor] forState: UIControlStateDisabled];

Đối với ca cao tôi không biết.

+4

Điều đó giải quyết được vấn đề cho Cocoa Touch, nhưng không giải quyết được Cocoa, đó là những gì người hỏi đang hỏi. –

+0

Tôi đã bỏ lỡ điều đó, cảm ơn vì đã chỉ ra –

0

Phân lớp NSButtonCell và gán cho nút CELL của bạn bằng IB (không phải nút BUTTON trực tiếp -> một cấp sâu hơn). Trong lớp con thực hiện những điều sau và modifiy kích thước, font chữ và màu sắc theo ý muốn:

- (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: Chỉ hoạt động nếu setWantsLayers là sai

Các vấn đề liên quan