2009-10-09 32 views
9

Tôi có một chuyển hướng dựa trên ứng dụng đơn giản cho iphone/Objective-CThiết phông chữ và font-size của văn bản thanh tiêu đề trong một UITableViewController

trong UIViewControllers khác nhau được đẩy vào xem, tôi có thể thiết lập các văn bản trong thanh tiêu đề sử dụng một cái gì đó giống như

self.title = @"blah blah blah" 

có cách nào để kiểm soát phông chữfont-size của tiêu đề trong văn bản thanh tiêu đề?

cảm ơn!

Trả lời

3

Bạn có thể gán bất kỳ UIView nào vào vùng tiêu đề của điều khiển viên.

Tạo UILabel và đặt phông chữ và kích thước của nó theo bất kỳ cách nào bạn muốn, sau đó gán nó cho thuộc tính navigationItem.titleView của UIViewController. Đảm bảo backgroundColor của UILabel được đặt thành clearColor.

Điều này chỉ hoạt động trên chế độ xem điều hướng cấp cao nhất. Khi người dùng đi sâu vào phân cấp bộ điều khiển chế độ xem và nút "quay lại" được hiển thị, tiêu đề thay thế bị bỏ qua và nhãn văn bản thông thường được hiển thị.

+0

Có cách nào để đặt kích thước phông chữ, vv cho thanh tiêu đề * khoan xuống không? – user141146

+0

Các tài liệu chính thức cho biết tiêu đề xem trước bị bỏ qua (có lẽ vì họ muốn người dùng xem văn bản trước khi nó xuất hiện trong nút 'quay lại' ở cấp độ tiếp theo.) Nhưng bạn luôn có thể thử xem lại quá trình tải xuống và quét đệ quy phân cấp khung nhìn của NavBar cho đến khi bạn tìm thấy đúng UILabel rồi đặt phông chữ trên đó. – Ramin

17

cách thích hợp để thay đổi kích thước văn bản tiêu đề của một navcontroller là để thiết lập thuộc tính titleView của navigationItem

như thế này (trong viewDidLoad)

UILabel* tlabel=[[UILabel alloc] initWithFrame:CGRectMake(0,0, 300, 40)]; 
     tlabel.text=self.navigationItem.title; 
    tlabel.textColor=[UIColor whiteColor]; 
    tlabel.backgroundColor =[UIColor clearColor]; 
    tlabel.adjustsFontSizeToFitWidth=YES; 
    self.navigationItem.titleView=tlabel; 
4

Bạn có thể muốn chạm nổi nhãn để nó trông không mờ và phẳng:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    CGRect frame = CGRectMake(0, 0, 400, 44); 
    UILabel *label = [[[UILabel alloc] initWithFrame:frame] autorelease]; 
    label.backgroundColor = [UIColor clearColor]; 
    label.font = [UIFont boldSystemFontOfSize:18.0]; 
    label.textAlignment = UITextAlignmentCenter; 
    label.textColor = [UIColor whiteColor]; 
    label.text = self.navigationItem.title; 
    // emboss so that the label looks OK 
    [label setShadowColor:[UIColor darkGrayColor]]; 
    [label setShadowOffset:CGSizeMake(0, -0.5)]; 
    self.navigationItem.titleView = label; 
} 
+0

cũng được thực hiện tốt để thêm textAlignment –

+0

Tôi không biết FontHelper là gì, vì vậy tôi đã sử dụng: 'label.font = [UIFont boldSystemFontOfSize: 18.0];' Điều này có vẻ khá gần với phông chữ gốc cho tiêu đề thanh điều hướng. – Ginny

+0

@Ginny - xin lỗi về điều đó, tôi đã không nhận thấy rằng tôi đã để lại trong một cuộc gọi đến lớp FontHelper của riêng tôi! –

3

NẾU bạn muốn làm việc này trên cả iphone và ipad và cũng muốn lấy tiêu đề làm trung tâm, hãy sử dụng mã sau.

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    UILabel* label=[[UILabel alloc] initWithFrame:CGRectMake(0,0, self.navigationItem.titleView.frame.size.width, 40)]; 
    label.text=self.navigationItem.title; 
    label.textColor=[UIColor whiteColor]; 
    label.backgroundColor =[UIColor clearColor]; 
    label.adjustsFontSizeToFitWidth=YES; 
    label.font = [AppHelper titleFont]; 
    label.textAlignment = NSTextAlignmentCenter; 
    self.navigationItem.titleView=label; 
} 
Các vấn đề liên quan