Подтвердить что ты не робот

UINavigationBar позиция заголовка

У меня есть пользовательский UINavigationBar (другой размер, фон и т.д.), который имеет встроенное представление заголовка. Для этого я использовал этот код:

UIView * mainView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, kScreenWidth, kScreenHeight)];
    mainView.backgroundColor = [UIColor yellowColor];

    UINavigationBar *navBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0,0,kScreenWidth,80)];
    navBar.autoresizingMask = UIViewAutoresizingFlexibleWidth;

    UINavigationItem *currentItem = [[UINavigationItem alloc] init];
    UILabel *label = [[UILabel alloc] init];
    label.font = [UIFont fontWithName:@"Helvetica-Bold" size: 30.0];
    [label setBackgroundColor:[UIColor clearColor]];
    [label setTextColor:[UIColor whiteColor]];
    [label setText:self.title];
    [label sizeToFit];
    [currentItem setTitleView:label];
    [label release];

    [navBar pushNavigationItem:currentItem animated:NO];
    [currentItem release];

    [mainView addSubview:navBar];
    [navBar release];    

    self.view = mainView;
[mainView release];

Однако теперь моя проблема заключается в том, что даже если пользовательский заголовок правильно добавлен, он не вертикально центрирован с помощью NavBar. Что мне не хватает?

Спасибо!

4b9b3361

Ответ 1

Вы можете использовать setTitleVerticalPositionAdjustment:forBarMetrics: в iOS 5 для изменения позиции заголовка, он работает с обычным заголовком, например:

CGFloat verticalOffset = -4;
[[UINavigationBar appearance] setTitleVerticalPositionAdjustment:verticalOffset forBarMetrics:UIBarMetricsDefault];

Ответ 2

Вы создали UINavigationBar с высотой 80 точек, когда стандартный UINavigationBar имеет 44 очка. Вероятно, он позиционировал его в центре на 44 очках на базе...

Вы можете попытаться сделать UIView с высотой 80 очков и добавить внутри него UILabel. (не проверено, просто догадка)