kurisukun
kurisukun

Reputation: 3159

Shifting the text of UINavigationBar title left or right

I would like to be able to control the position of the title in a UInavigationBar. For example, right now my titles are centered, but for some views, I need to shift the title origin a few px to the left or so. Is this possible?

Thank you!

Upvotes: 0

Views: 4124

Answers (2)

crz
crz

Reputation: 458

your code here

- (void) customNavBarTitleWithText:(NSString *) text andFontsize:(float) fontsize
{
    // Custom nav bar back button
    UIImage *img = [UIImage imageNamed:@"back_btn.png"];
    UIButton *backbtn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, img.size.width, img.size.height)];
    [backbtn setImage:img forState:UIControlStateNormal];
    [backbtn addTarget:self action:@selector(backBtnClicked) forControlEvents:UIControlEventTouchUpInside];
    UIBarButtonItem *backBarBtn = [[UIBarButtonItem alloc] initWithCustomView:backbtn];
    [self.navigationItem setLeftBarButtonItem:backBarBtn];

    //Custom nav bar title
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectZero];
    label.backgroundColor = [UIColor clearColor];
    label.font = [UIFont boldSystemFontOfSize:fontsize];
    label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];
    label.textAlignment = NSTextAlignmentCenter;

    // Use UITextAlignmentCenter for older SDKs.
    label.textColor = [UIColor whiteColor]; // change this color
    self.navigationItem.titleView = label;
    label.text = text;
    label.lineBreakMode = NSLineBreakByWordWrapping;
    label.numberOfLines = 0;
    [label sizeToFit];

    // Set nav bar background image
    [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"top_bar_bg.png"] forBarMetrics:UIBarMetricsDefault];
  }

in there:

 label.textAlignment = NSTextAlignmentCenter;

you can use another mode: NSTextAlignmentLeft, NSTextAlignmentRight, NSTextAlignmentJustified, etc..

Hope it work for you!

Upvotes: 1

rdelmar
rdelmar

Reputation: 104082

You can add a custom titleView to your navigation item, and place an off-center UILabel in it to hold your title. Another easier way, might be to just append a space character or two to the end of your title if that gives you the amount of displacement you need.

Upvotes: 1

Related Questions