Заголовок UINavigationBar обрезается при изменении viewControllers - PullRequest
6 голосов
/ 13 марта 2012

Когда я нажимаю новый tableViewController со стартового экрана приложения для iOS (я нажимаю экран настроек), заголовок в UINavigationController обрезается до завершения анимации:

enter image description here

Это NavigationBar в середине анимации, и незадолго до ее завершения она выглядит следующим образом:

enter image description here

Через некоторое время заголовок корректно меняется на «Настройки». Это не имеет большого значения, но вы можете себе представить, насколько это беспокоит слегка склонного к OCD программиста! :)

Вот код в tableViewController, где я установил заголовок, ничего особенного:

- (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;
}

Ответы [ 3 ]

1 голос
/ 12 ноября 2012

Я немного опоздал с ответом, но я разыскал проблему на iOS 5. Когда вы используете прокси-сервер UIAppearance на UINavigationBar, кажется, что вам нужно явно установить размер шрифта вместо использования 0.0, чтобы позволить это автоматически устанавливается в зависимости от ориентации.

Мне удалось это исправить, создав подкласс UINavigationController и введя следующий код:

- (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 голосов
/ 14 сентября 2012

попробуй

- (void)viewWillAppear:(BOOL)animated {

    self.title = @"Settings";
}
0 голосов
/ 28 августа 2012

попробуйте установить

self.navigationItem.title = self.title;

в методе viewWillAppear

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...