2009-10-28 34 views
5

Tôi tự hỏi nếu có cách nào để sử dụng hằng số trong Trình tạo giao diện, để tránh đặt cùng một cách thủ công ở các vị trí khác nhau (ví dụ: đôi khi có thể là một công việc rất tẻ nhạt ...)Làm thế nào để chia sẻ các hằng số giữa Interface Builder và mã?

Hiện tại tôi đã đặt màu sắc trong mã và sử dụng #define để thiết lập màu, nhưng rõ ràng là IB không thể sử dụng #define ...

Trả lời

-1

Tôi nghĩ cách dễ nhất để thực hiện việc này là tạo danh mục trên lớp UIColor và tạo một phương pháp lớp học trên đó. Ví dụ:

Nơi này trong một tập tin tiêu đề (ví dụ như UIColor + CustomColors.h):

@interface UIColor (CustomColors) 
+ (UIColor *)myCustomColor; 
@end 

Nơi này trong một tập tin thực thi (ví dụ UIColor + CustomColors.m)

@implementation UIColor (CustomColors) 
+ (UIColor *)myCustomColor 
{ 
    return [UIColor colorWithRed:0.2 green:0.5 blue:0.2 alpha:1.0]; 
} 
@end 

Sau đó, bạn có quyền truy cập vào phương thức lớp ở bất kỳ đâu trong mã của bạn như vậy:

... 
self.view.backgroundColor = [UIColor myCustomColor]; 
... 

Xem Apple's documentation on Categories để biết thêm thông tin.

Hoặc, bạn có thể lưu các mẫu màu thông qua bảng màu của hệ thống. Để làm điều này bạn chỉ cần gọi lên bảng màu hệ thống, chọn một màu và kéo nó vào lưới màu.

Những màu này hiện có sẵn không chỉ trong mọi tài liệu Trình tạo giao diện mà bạn tạo, mà là bất kỳ ứng dụng nào sử dụng bảng màu của hệ thống.

color palette http://img.skitch.com/20091030-dhh3tnfw5d8hkynyr7e5q3amwg.png

+0

Cảm ơn bạn trả lời. Trên thực tế, tôi đã có thể thích để thiết lập màu sắc trong IB, không phải trong mã (có nghĩa là tôi muốn tránh self.backgroundColor = myColor). Nhưng nếu tôi sử dụng một màu tùy chỉnh từ bảng màu khi bạn đề cập đến nó, và nếu tôi muốn sửa đổi trong tương lai tỷ lệ phần trăm màu xanh của màu của tôi chẳng hạn, tôi vẫn sẽ phải thực hiện thay đổi theo cách thủ công trong IB ở mọi nơi tùy chỉnh màu sắc được sử dụng ... Tôi đang giữ giải pháp #define của tôi cho thời điểm này, nó giúp tôi tiết kiệm thời gian tái cấu trúc tẻ nhạt .... – Unfalkster

0

Tôi đã làm việc xung quanh vấn đề này bằng cách subclassing các điều khiển khác nhau để đảm bảo cùng một phong cách trong suốt ứng dụng. Hạn chế là bạn không thể nhìn thấy phong cách trong trình xây dựng giao diện chỉ là một wireframe.

Ví dụ tôi có một

@interface MyButton : UIButton 
@end 


@implementation MyButton 

-(void) initialize{ 
self.backgroundColor = [UIColor MyButonColor]; // Using a category on UIColor 
} 

- (id)initWithFrame:(CGRect)frame{ 
    self = [super initWithFrame:frame]; 
    if (self) { 
     [self initialize]; 
    } 
    return self; 
} 

- (id)initWithCoder:(NSCoder *)decoder { 
    if (self = [super initWithCoder:decoder]) { 
     [self initialize]; 
    } 
    return self; 
} 
Các vấn đề liên quan