Cách tiếp cận hiện đại
Cách hiện đại, đối với toàn bộ bộ điều khiển điều hướng, hãy thực hiện việc này một lần, khi chế độ xem gốc của bộ điều khiển điều hướng của bạn được tải.
[self.navigationController.navigationBar setTitleTextAttributes:
@{NSForegroundColorAttributeName:[UIColor yellowColor]}];
Tuy nhiên, điều này dường như không có ảnh hưởng trong các lần xem tiếp theo.
Cách tiếp cận cổ điển
Cách cũ, bộ điều khiển cho mỗi chế độ xem (các hằng số này dành cho iOS 6, nhưng nếu muốn thực hiện theo bộ điều khiển xem trên giao diện iOS 7, bạn sẽ muốn có cùng một cách tiếp cận nhưng với các hằng số khác nhau):
Bạn cần sử dụng một UILabel
như là titleView
của navigationItem
.
Nhãn nên:
- Có màu nền rõ ràng (
label.backgroundColor = [UIColor clearColor]
).
- Sử dụng phông chữ hệ thống 20pt đậm (
label.font = [UIFont boldSystemFontOfSize: 20.0f]
).
- Có một bóng đen với 50% alpha (
label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5]
).
- Bạn cũng muốn đặt căn chỉnh văn bản thành chính giữa (
label.textAlignment = NSTextAlignmentCenter
( UITextAlignmentCenter
đối với SDK cũ hơn).
Đặt màu văn bản nhãn thành bất kỳ màu tùy chỉnh nào bạn muốn. Bạn thực sự muốn một màu không làm cho văn bản bị hòa vào bóng, rất khó đọc.
Tôi đã giải quyết vấn đề này thông qua bản dùng thử và lỗi, nhưng các giá trị tôi đưa ra cuối cùng quá đơn giản để chúng không phải là những gì Apple chọn. :)
Nếu bạn muốn xác minh điều này, thả mã này vào initWithNibName:bundle:
trong PageThreeViewController.m
của Apple mẫu NavBar . Điều này sẽ thay thế văn bản bằng một nhãn màu vàng. Điều này không thể phân biệt được với bản gốc được sản xuất bởi mã của Apple, ngoại trừ màu sắc.
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self)
{
// this will appear as the title in the navigation bar
UILabel *label = [[[UILabel alloc] initWithFrame:CGRectZero] autorelease];
label.backgroundColor = [UIColor clearColor];
label.font = [UIFont boldSystemFontOfSize:20.0];
label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];
label.textAlignment = NSTextAlignmentCenter;
// ^-Use UITextAlignmentCenter for older SDKs.
label.textColor = [UIColor yellowColor]; // change this color
self.navigationItem.titleView = label;
label.text = NSLocalizedString(@"PageThreeTitle", @"");
[label sizeToFit];
}
return self;
}
Chỉnh sửa: Ngoài ra, đọc câu trả lời của Erik B bên dưới. Mã của tôi cho thấy hiệu ứng, nhưng mã của anh ta cung cấp một cách đơn giản hơn để thả nó vào vị trí trên bộ điều khiển xem hiện có.