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

标题位于完成按钮的最左边缘和右侧之间的空间中。它不会像忽略取消按钮那样忽略完成按钮。

谁能指出我正确的方向来获得我所追求的东西?对不起所有的 naff ASCII 图!:)

4

2 回答 2

2

也许尝试使用:

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

如果 UITollbar 将负责标签,这可能会有所帮助。

编辑 尝试添加:

[label sizeToFit];

在将其添加到收费栏之前

于 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 回答