Chúng tôi đã mở rộng UILabel để có thể áp dụng phông chữ và màu chuẩn cho mọi ứng dụng của một loại nhãn nhất định trong ứng dụng của chúng tôi. Ví dụ.Hiện tượng không có hiệu lực trên UILabels được tạo theo chương trình
@interface UILabelHeadingBold : UILabel
@end
Trong appdelegate của chúng tôi, chúng tôi áp dụng các phông chữ và màu sắc như thế này
[[UILabelHeadingBold appearance] setTextColor:<some color>];
[[UILabelHeadingBold appearance] setFont:<some font>];
Khi thêm một UILabel trong của XIB của chúng tôi, bây giờ chúng ta có thể chọn các lớp học để được loại UILabelHeadingBold, và nó hoạt động như mong đợi . Nhãn được hiển thị với phông chữ và màu sắc chính xác, như được chỉ định trong AppDelegate của chúng tôi.
Tuy nhiên, nếu chúng tôi tạo nhãn theo lập trình, ví dụ:
UILabelHeadingBold *headingLabel = [[UILabelHeadingBold alloc] initWithFrame:CGRectMake(10, 10, 100, 30)];
[self.mainView addSubview:headingLabel];
UILabel không nhận được phông chữ/màu mong muốn được áp dụng. Chúng ta phải áp dụng thủ công các thuộc tính này.
Có cách nào để làm cho UIAppearance có hiệu lực trên các phần tử giao diện người dùng được tạo lập trình, hay nó chỉ hoạt động khi được sử dụng trong XIB?
Nó * không * đôi khi làm việc cho UILabels tạo trong mã quá, nhưng kết quả không phù hợp, và hành vi khác nhau giữa iOS 5 và, bạn biết đấy. Vì vậy, không sử dụng 'UIAppearance' để tùy chỉnh' UILabel's –
+1 cho thông tin, rằng tôi không phải là người duy nhất nhận được kết quả không phù hợp (đã cho tôi mã hóa giờ cho đến khi tôi tìm thấy bình luận của bạn). 1 cho giải pháp robert.wijas - mà tôi sử dụng ngay bây giờ - và mọi thứ đều ổn. – anneblue