1

UINavigationBarには複数行のタイトルがあり、次のコードを使用してセットアップしています。

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 480, 50)];
label.backgroundColor = [UIColor clearColor];
label.numberOfLines = 2;
label.font = [UIFont boldSystemFontOfSize: 15.0f];
label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];
label.textAlignment = NSTextAlignmentCenter;
label.textColor = [UIColor whiteColor];
label.text = @"Headloss due to Friction              (Hazen Williams Eq.)";

self.navigationItem.titleView = label;

これはサブビュー上にあるため、 によって追加された「戻る」ボタンがありUINavigationControllerます。そのため、タイトルを追加するlabel.textAlignment = NSTextAlignmentCenter;と中央に配置されると考えましたが、実際には、「戻る」ボタンの端から画面の端までタイトルを中央に配置しています。

これをオーバーライドして、画面のサイズに基づいてタイトルが実際に中央に配置されるようにするにはどうすればよいですか (基本的に、戻るボタンが存在しない場合のデフォルトの方法)。

4

1 に答える 1

2

かなり難しい良い質問です。よりエレガントなソリューションを見つけたら、回答を編集しますが、これが私が思いついたものです:

UIView *spaceView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 30, 20)];

UIBarButtonItem *space = [[UIBarButtonItem alloc] initWithCustomView:spaceView];
self.navigationItem.rightBarButtonItems = [NSArray arrayWithObject:space];

UIView の幅を調整して、titleLabel をどれだけ動かしたいかだけを調整します。

于 2013-08-01T21:09:59.910 に答える