UIToolbar调整大小会导致Landscape中出现奇怪的UIBarButtonItem大小

时间:2011-07-18 00:15:40

标签: iphone objective-c ios uibarbuttonitem uitoolbar

当我创建并添加UIToolBar和UIBarButton项目时,如何让工具栏和项目在两个方向上正确显示。这就是我到目前为止所做的:

self.toolbar = [[[UIToolbar alloc]initWithFrame:CGRectMake(0, 372, 320, 44)]autorelease];
self.toolbar.autoresizingMask = UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

self.deleteButton = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemTrash target:self action:@selector(deleteButtonClicked)] autorelease];
self.deleteButton.style = UIBarButtonItemStylePlain;

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

self.shareButton = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(shareButtonClicked)] autorelease];
self.shareButton.style = UIBarButtonItemStylePlain;
self.navigationItem.leftBarButtonItem = backItem;

NSArray *toolbarItems = [NSArray arrayWithObjects:self.shareButton,flexibleSpace,self.deleteButton,nil];
[self.toolbar setItems:toolbarItems animated:NO];   

正如您从图像中看到的那样,UIBarButtonItems在纵向看起来是正确的,但是在风景中奇怪地挤压并偏离中心(尤其是垃圾图标)。是否有一个明显的解决方案我缺少,或者我是否必须手动调整大小才能做到这一点?

Portrait Orientation

Landscape Orientation

这是一个微妙的差异,但它应该是这样的: What it should look like

2 个答案:

答案 0 :(得分:0)

您必须查看Autoresizing中的Size inspector选项以获取UIToolBar和按钮。 UIToolBar也可能设置了Autoresize subviews的复选标记取消选中,因此它不会影响您的按钮。

答案 1 :(得分:0)

答案,至少在iOS 5之前是使用UINavigationController的内置工具栏而不是创建自己的工具栏。内置工具栏将正确自动调整大小。