Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

UINavigationBar custom title position

Tags:

I have a custom made UINavigationBar (different size, background etc) that has inside a custom title view. I used this code to achieve this:

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];

However, my problem now is that, even if the custom title view is correctly added, it's not vertically centered with the NavBar. What I am missing?

Thanks!

like image 796
Rad'Val Avatar asked May 13 '11 13:05

Rad'Val


1 Answers

You can use setTitleVerticalPositionAdjustment:forBarMetrics: in iOS 5 to change the title position, it works on normal title e.g.:

CGFloat verticalOffset = -4;
[[UINavigationBar appearance] setTitleVerticalPositionAdjustment:verticalOffset forBarMetrics:UIBarMetricsDefault];
like image 137
Tobias Ahlin Avatar answered Sep 22 '22 16:09

Tobias Ahlin