2012-03-13 32 views
6

Khi tôi đẩy một tableViewController mới từ màn hình khởi động của ứng dụng iOS (Tôi đẩy Cài đặt màn hình) các tiêu đề trong UINavigationController bị cắt bớt cho đến khi kết thúc hoạt hình:UINavigationBar tiêu đề bị cắt bớt khi thay đổi viewControllers

enter image description here

đó là Navigationbar vào giữa hình ảnh động, và ngay trước khi kết thúc hoạt hình, nó trông như thế này:

enter image description here

Sau am bỏ qua, tiêu đề thay đổi chính xác thành "Cài đặt". Nó không phải là một vấn đề lớn, nhưng bạn có thể tưởng tượng bao nhiêu nó làm phiền một lập trình viên hơi dễ bị OCD! :)

Dưới đây là mã trong tableViewController nơi tôi đặt tiêu đề, không có gì đặc biệt:

- (id)initWithStyle:(UITableViewStyle)style 
{ 
    self = [super initWithStyle:style]; 
    if (self) { 
     self.title = @"Settings"; 
     // Hide tabBar when pushed so you cannot switch from the Settings 
     self.hidesBottomBarWhenPushed = YES; 
     self.tableView.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed:@"bg.png"]]; 
    } 
    return self; 
} 
+2

Tôi cũng có vấn đề này gây phiền nhiễu. Trong trường hợp của tôi, tôi đang sử dụng một phông chữ tùy chỉnh cho tiêu đề điều hướng và đặt chúng bằng cách sử dụng setTitleTextAttributes: forState :, nó không xảy ra nếu tôi không thay đổi nó. Ngoài ra, "vấn đề" này dường như được sửa trong iOS6. Tôi muốn tìm một công việc xung quanh, đó là lý do tại sao tôi bắt đầu một tiền thưởng để mang lại một số sự chú ý ... –

+0

Bạn có thể đặt bg.png trên tài khoản đăng hoặc tương tự không? –

+0

Bạn có phân lớp phụ nào sau đây: 'UINavigationBar',' UINavigationItem', 'UINavigationController'? – Ander

Trả lời

1

Tôi hơi muộn với câu trả lời, nhưng tôi đã theo dõi vấn đề trên iOS 5. Khi bạn sử dụng proxy UIAppearance trên UINavigationBar, có vẻ như bạn cần đặt kích thước phông chữ rõ ràng, thay vì sử dụng 0.0 để cho phép tự động đặt dựa trên hướng.

tôi đã có thể sửa lỗi này bằng subclassing UINavigationController và đưa vào đoạn mã sau:

- (void)viewWillLayoutSubviews { 
    [super viewWillLayoutSubviews]; 

    // You should include a conditional here to check for iOS 5, so iOS 6 doesn't have to do any additional work 
    self.navigationBar.titleTextAttributes = @{ 
     UITextAttributeFont:[UIFont boldSystemFontOfSize:UIInterfaceOrientationIsPortrait(self.interfaceOrientation) || IS_IPAD ? 20.0f : 16.0f], 
     UITextAttributeTextColor:[UIColor whiteColor], 
     UITextAttributeTextShadowColor:[UIColor colorWithWhite:0.0f alpha:0.5f], 
     UITextAttributeTextShadowOffset:[NSValue valueWithUIOffset:UIOffsetMake(0.0f, -1.0f)] 
    }; 
} 
+0

Có, đặt kích thước phông chữ vào một giá trị mã hóa cứng đã khắc phục được sự cố. Đây là mã theo thời gian: '[[UINavigationBar xuất hiện] setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys: [UIFont fontWithName: @ "Akzidenz-Grotesk BQ" kích thước: 0,0], UITextAttributeFont, nil]];' Và tôi chỉ thay đổi kích thước font chữ đến một giá trị cố định: '[[UINavigationBar xuất hiện] setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys: [UIFont fontWithName: @ "Akzidenz-Grotesk BQ" kích thước: 22,0], UITextAttributeFont, nil]];' trình như một say mê bây giờ. Cảm ơn! –

0

thử thiết

self.navigationItem.title = self.title; 

trong phương pháp viewWillAppear

0

thử

- (void)viewWillAppear:(BOOL)animated { 

    self.title = @"Settings"; 
} 
+1

Là một bên, mỗi [tài liệu] (http://developer.apple.com/library/ios/documentation/uikit/reference/UIViewController_Class/Reference/Reference.html#//apple_ref/occ/instm/UIViewController/viewWillAppear :), "[i] e bạn ghi đè phương thức này, bạn phải gọi siêu tại một số điểm trong quá trình thực hiện của bạn." – Rob

Các vấn đề liên quan