Một cách tiếp cận tôi đã sử dụng trên các dự án khác là tạo tệp ProjectStyle.h, có #defines cho màu tùy chỉnh và các hằng số có liên quan đến kiểu khác. Bạn chỉ cần nhập nó.
Cái gì như:
ProjectStyles.h
#define RED_HEADER_COLOR [UIColor colorWithRed:0.8f green:0.1f blue:0.1f alpha:0.9f]
#define RED_BACKGROUND_COLOR [UIColor colorWithRed:0.9f green:0.3f blue:0.1f alpha:1.0f]
#define PRIMARY_FONT [UIFont fontWithName:@"HelveticaNeue-Bold" size:12.0f]
Bạn cũng có thể có một tập tin .m tương ứng nếu bạn muốn tạo ra các trường hợp liên tục của một số đối tượng UIColor hoặc UIFont, một cái gì đó giống như
ProjectStyles.m
+ (UIColor *) redHeaderColor
{ return [UIColor colorWithRed:0.8f green:0.1f blue:0.1f alpha:0.9f]; }
+ (UIColor *) redBackgroundColor
{ return [UIColor colorWithRed:0.9f green:0.3f blue:0.1f alpha:1.0f]; }
+ (UIFont *) primaryFont
{
static UIFont *font = nil;
if (font == nil)
font = [UIFont fontWithName:@"HelveticaNeue-Bold" size:12.0f];
return font;
}
Và sau đó tất nhiên phơi bày những điều đó trong tiêu đề
Điều khác tôi thích về kiểu tiếp cận ProjectStyle là sau một thời gian bạn sẽ muốn nhiều thứ tùy chỉnh hơn jus t màu sắc - phông chữ tùy chỉnh, dòng tùy chỉnh và bóng tối. Có một lớp Style hoặc header để đặt tất cả những thứ này cho bạn một nơi để tìm kiếm những yếu tố tùy chỉnh nào đã được định nghĩa cho tất cả mọi thứ, và một #import rất rõ ràng để các lập trình viên sau đó theo dõi lại bạn tập trung tốt của thông tin tùy chỉnh .
Nếu bạn chỉ đặt các phần tử tùy chỉnh vào danh mục thì bạn kết thúc với tùy chỉnh trải rộng trên nhiều danh mục và cũng có khả năng (chủ yếu là từ xa) về xung đột tên danh mục với thư viện bên thứ ba khác.
Nguồn
2013-02-17 01:38:05
WWDC 2012 phiên 216 trình bày một cách tiếp cận rất giống với điều này, nếu có ai quan tâm. – MaxGabriel
Trong khi sử dụng một số mẫu giống như mẫu có vẻ thích hợp, tôi sẽ luôn luôn kiềm chế sử dụng chỉ thị tiền xử lý cho nhiệm vụ đó - định nghĩa không an toàn kiểu và do đó xấu xí. Tại sao không sử dụng một thuộc tính xuất hiện thích hợp (như màu) nhà máy. Một cái gì đó như '[MyAppearance màu: @" ultraBlue "]' – Till
#define là loại an toàn, bởi vì họ kết thúc được mã thực được kiểm tra bởi các phân tích tĩnh và trình gỡ lỗi trong cùng một cách bất kỳ mã khác sẽ được (để một nơi nào đó nếu bạn sử dụng #define dẫn đến UIColor, nhưng cần CGColor bạn sẽ nhận được cảnh báo ngay lập tức). Trình chỉnh sửa cũng tự động hoàn thành mã #define, vì vậy MY_COLOR.CGColor tự động hoàn thành.Ngoài ra, #define items autocomplete hoàn toàn - trong ví dụ của bạn, bạn vẫn phải gõ @ "ultraBlue" để lại chỗ cho lỗi. Sử dụng phương thứC#define hoặc factory, các kiểu sẽ dễ dàng tự động hoàn thành để loại bỏ lỗi. –