2011-12-25 40 views
15

Ứng dụng iPhone của tôi có bộ điều khiển thanh tab và trên mỗi tab (4 tab) có UINavigationController mà tôi muốn có màu khác và thay đổi phông chữ trên tiêu đề, vì vậy tôi đã tạo bộ điều hướng điều hướng tùy chỉnh của riêng tôi để sử dụng ở mọi nơi để những thay đổi đó chỉ ở 1 vị trí. Màu sắc là dễ dàng và hoạt động tốt, nhưng khi tôi cố gắng thiết lập phông chữ bằng cách sử dụng setTitleTextAttributes, nó thay đổi phông chữ nhưng trên một số quan điểm tiêu đề cho thấy bị cắt ở cuối (ví dụ: "My titl ..."). Nếu tôi thay đổi chế độ xem và sau đó quay lại chế độ xem với tiêu đề bị cắt, tiêu đề sẽ hiển thị chính xác.Tiêu đề thanh tiêu đề bị cắt khi sử dụng titleTextAttributes

Hiện nay viewDidLoad của tôi trong UINavigationController tùy chỉnh của tôi có:

UIFont *font = [UIFont fontWithName:@"GillSans-Bold" size:22]; 
NSDictionary *attr = [[NSDictionary alloc] initWithObjectsAndKeys:font, UITextAttributeFont, nil]; 
[self.navigationBar setTitleTextAttributes:attr]; 

suy nghĩ của tôi là nó đang thay đổi phông chữ của titleView nhưng nó không bị thay đổi kích cỡ phù hợp với kích thước mới (vì nó là một phông chữ lớn hơn). Một vấn đề khác là khi điện thoại được chuyển sang chế độ ngang, bất kỳ chữ cái nào treo thấp (g, p, y) đều có phần đáy bị cắt. Có cách nào để thay đổi kích cỡ nhãn hoặc cho phép đặt minimumFontSize để văn bản chỉ co lại khi quá lớn không?

Trả lời

3

này làm việc cho tôi

- (void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 
    [self setTitle:self.station.title]; 
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 400, 44)]; 
    label.backgroundColor = [UIColor clearColor]; 
    [label setFont:[UIFont fontWithName:@"GillSans-Bold" size:24.0]]; 
    label.textAlignment = UITextAlignmentCenter; 
    label.textColor = [UIColor whiteColor]; 
    label.adjustsFontSizeToFitWidth = YES; 
    label.text = self.title;  
    self.navigationItem.titleView = label; 
} 
+5

Ugly hack, tạo một cái nhìn tiêu đề mới? ugh ... –

0

Tôi nghĩ rằng vấn đề này là w.r.trootviewcontroller. Thanh tab được xác định trong bộ điều khiển chế độ xem gốc của bạn phải không?

Từ đó nếu bạn nhấn và bật qua bộ điều khiển điều hướng - tất cả nội dung sẽ giống nhau bất kể điều hướng.

0

này đã làm việc cho tôi:

+ (void)setNavBarTitle:(NSString *)title forUINavigationItem:(UINavigationItem*)navigationItem 
{ 
    UILabel *label = [[[UILabel alloc] initWithFrame:CGRectMake(0, 0, 0, 0)] autorelease]; 
    label.backgroundColor = [UIColor clearColor]; 
    label.font = [UIFont boldSystemFontOfSize:24]; 
    label.textAlignment = UITextAlignmentCenter; 
    label.baselineAdjustment = UIBaselineAdjustmentAlignCenters; 
    label.textColor = [UIColor whiteColor]; 
    label.adjustsFontSizeToFitWidth = YES; 
    label.text = title; 
    [label sizeToFit]; 
    navigationItem.titleView = label; 
} 
Các vấn đề liên quan