2

どちらかの側にボタンがある UIToolBar のテキストを中央に配置しようとしていますが、いくつか問題があります。

次のコードがあります。

UIToolbar *toolBar = [[UIToolbar alloc] initWithFrame:toolbarInitialFrame];
toolBar.barStyle = UIBarStyleBlackTranslucent;

UILabel * label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 200, 25)];
[label setText:@"Title"];
[label setBackgroundColor:[UIColor clearColor]];
[label setTextColor:[UIColor whiteColor]];
[label setFont:[UIFont boldSystemFontOfSize:16]];   
UIBarButtonItem * labelEmu=[[UIBarButtonItem alloc] initWithCustomView:label];

UIBarButtonItem *cancelButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancelAlarmAndDismissDatePicker:)];

UIBarButtonItem *spacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];

UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(setAlarmAndDismissDatePicker:)];

だから私が欲しいのはcancelButton、左側にキャンセルボタン( )labelEmu、中央にタイトル( )doneButton、右側に完了ボタン( )です。このようなもの:

|[Cancel]    Title    [Done]|

私はこれでそれを達成できることを望んでいました:

[toolBar setItems:[NSArray arrayWithObjects: cancelButton, spacer, labelEmu, spacer, doneButton, nil]];

しかし、残念ながら私が得るのはこれです:

|[Cancel]Title        [Done]|

いくつか遊んだ後、私はこの行を見つけました:

[toolBar setItems:[NSArray arrayWithObjects: cancelButton, spacer, labelEmu, spacer, nil]];

...これを生成します:

|[Cancel]    Title          |

キャンセルボタンがあるという事実を無視して、タイトルが中央にある場所。しかし、私がこれを行うとき:

[toolBar setItems:[NSArray arrayWithObjects: spacer, labelEmu, spacer, doneButton, nil]];

...これを生成します:

|        Title        [Done]|

完了ボタンの左端と右端の間のスペースの中央にタイトルが配置される場所。キャンセル ボタンを無視するのと同じように、完了ボタンを無視するわけではありません。

私が求めているものを得るために、誰かが私を正しい方向に向けることができますか? かわいそうな ASCII ダイアグラムで申し訳ありません。:)

4

2 に答える 2

2

多分使ってみてください:

[[UIBarButtonItem alloc] initWithTitle:@"yourtitle" style:UIBarButtonItemStylePlain target:nil action:nil];

UITollbar がラベルを担当する場合に役立つ場合があります。

編集 追加してみてください:

[label sizeToFit];

tollBar に追加する前に

于 2013-10-07T10:59:08.253 に答える
1

---編集済み---

さらに調査した結果、問題は実際にはラベルであることが判明しました。幅を 200 に設定しました。

正しく自動サイズ変更するには、はるかに少なくする必要があります。

このコードを参照してください:

UIToolbar *toolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 200, 320, 50)];
toolBar.barStyle = UIBarStyleBlackTranslucent;

[self addSubview:toolBar];

UILabel * label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 300, 25)];
[label setText:@"Title"];
[label setBackgroundColor:[UIColor clearColor]];
[label setTextColor:[UIColor whiteColor]];
[label setFont:[UIFont boldSystemFontOfSize:16]];
[label sizeToFit];
UIBarButtonItem * labelEmu=[[UIBarButtonItem alloc] initWithCustomView:label];

UIBarButtonItem *cancelButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancelAlarmAndDismissDatePicker:)];

UIBarButtonItem *spacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];

UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(setAlarmAndDismissDatePicker:)];

[toolBar setItems:[NSArray arrayWithObjects: cancelButton, spacer, labelEmu, spacer, doneButton, nil]];

次のようなものが生成されました。

ここに画像の説明を入力

于 2013-10-07T11:23:19.740 に答える