0

コードを使用してナビゲーションバーのタイトルを操作するxibがいくつかあります。

titleLabel.text = @"custom Title";
titleLabel.textAlignment = UITextAlignmentCenter;
self.navigationItem.titleView = titleLabel;

私が抱えている問題は、場合によっては、そのバーに右ボタンまたは左ボタン、あるいはその両方を追加することです。そうするたびに、テキストの配置が少しずれて、正しく中央に配置されなくなります。どうすれば修正できますか?

4

3 に答える 3

1

barButtonの幅を取得し、ラベルの幅から減算します。

この方法でバーボタンのフレームを決定できます。

UIBarButtonItemの幅を取得します

すなわち

NSInteger barButtonWidth = //determined through method above ^^^^^

titleLabel.frame = CGRectMake(titleLabel.frame.origin.x, titleLabel.frame.origin.y, titleLabel.size.width-barButtonWidth, titleLabel.size.height); 
于 2012-12-18T04:25:34.247 に答える
0

私はそれを回避する方法を見つけました。

タイトル ビューを設定する前にボタンを追加することで、xcode は自動的に配置を適切に設定します。順序が重要です。

于 2012-12-27T04:34:40.043 に答える
0

これは私のために働いた

UILabel *labelNav;

- (void)viewDidLoad {
    [super viewDidLoad];
    labelNav=[[UILabel alloc]initWithFrame:CGRectMake(0, 0, 150, 20)];
    labelNav.font=[UIFont fontWithName:boldFont size:15];
    labelNav.textColor=barTintColor;
    labelNav.text=kBoostBusinessHoursScreenTitle;
    labelNav.textAlignment=NSTextAlignmentCenter;
    labelNav.center=self.navigationController.navigationBar.center;
    CGRect framelabel=labelNav.frame;
    framelabel.origin.y=12;
    labelNav.frame=framelabel;
    [self.navigationController.navigationBar addSubview:labelNav];
}

-(void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
    [labelNav removeFromSuperview];
}
于 2015-05-13T09:32:08.970 に答える