2013-06-05 40 views
5

tôi muốn thay đổi tất cả màu văn bản của UILabel cho tổng số ứng dụng như thế nào tôi có thể làm điều này. Có cách đơn giản để thay đổi màu nhãn.Thay đổi màu văn bản của UILabel cho tổng số dự án

tôi đã cố gắng này, nhưng tôi muốn thay đổi ghi mã này trong mỗi lớp

for(UIView *view in [testScroll subviews]) 
    { 
     if([view isKindOfClass:[UILabel class]]) 
     { 
      [(UILabel *)view setTextColor:[UIColor whiteColor]]; 

     } 
     else if([view isKindOfClass:[UIView class]]) 

    } 

Đừng ai có phương pháp đơn giản.

+1

Bạn đang nhắm mục tiêu iOS 5+? – Alladinian

+0

@ Alladinian yes – user2197875

Trả lời

1

Tạo một lớp con của nhãn UILabel. Bạn có thể ghi đè các hàm init nơi bạn có thể đặt màu văn bản bạn muốn. Sử dụng phân lớp đó trong suốt dự án của bạn.

+0

Tại sao bạn sẽ làm điều này khi bạn chỉ có thể sử dụng '[[UILabel xuất hiện] setTextColor: [UIColor redColor]];'? Điều này sẽ thay đổi màu văn bản của tất cả các UILabels. Xin bạn có thể giải thích và đưa ra một lý do để làm theo cách của bạn hơn bằng cách sử dụng 'xuất hiện'? – Popeye

+0

@Popeye Dường như có một số vấn đề với việc sử dụng proxy UIAppearence trên UILabel. Tham khảo http://stackoverflow.com/a/11839198/1029360 – Adithya

+0

@Popeye tôi không thể nhận được nhãn màu đỏ bằng cách sử dụng câu lệnh ur – user2197875

12

Vâng, nếu bạn đang nhắm mục tiêu iOS 5 + bạn có thể làm điều đó thực sự dễ dàng (bên trong bạn appdelegate):

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    //... 

    //This color will affect every label in your app 
    [[UILabel appearance] setTextColor:[UIColor redColor]]; 

    //... 

    return YES; 
} 

này hoạt động vì UILabel phù hợp với UIAppearance giao thức, vì vậy bạn có thể tùy chỉnh bất kỳ lớp phù hợp với giao thức như thế này. Để biết thêm thông tin về điều này here is a nice tutorial to get you startedhere is Apple's docs on the protocol

+0

Câu trả lời đẹp và đơn giản :) – samir

+1

Màu xanh là đẹp hơn: '[[Giao diện UILabel] setColor: [UIColor blueColor]];' ^^ – Groot

+0

Thay đổi suy nghĩ của tôi: '[[UILabel appearance] setColor: [UIColor purpleColor]];' – Groot

2
@interface CustomLabel : UILabel 
@end 

@implementation CustomLabel 

- (id)init{ 
    if ([super init]){ 
     self.textColor = // Putt here the color you want. 
    } 

    return self; 
} 

và bây giờ jus sử dụng CustomLabel của bạn.

+0

tôi có thể thay đổi trong tệp appdelegate – user2197875

+0

Tại sao bạn sẽ làm điều này khi bạn chỉ có thể sử dụng [[UILabel appearance] setTextColor: [UIColor redColor]] ;? Điều này sẽ thay đổi màu văn bản của tất cả các UILabels. Xin bạn có thể giải thích và đưa ra một lý do để làm theo cách của bạn hơn bằng cách sử dụng xuất hiện? – Popeye

+1

@Popeye vì làm với UIAppareance là không linh hoạt, hãy tưởng tượng nếu một ngày anh ấy muốn một nhãn chúng tôi sẽ redColor và tất cả những màu xanh khác :) – samir

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