UIBarButtonItem大小不同

时间:2013-06-03 05:53:52

标签: iphone ios uinavigationbar uibarbuttonitem

我有一个应用程序,它使用Storyboard显示两个屏幕。第一个是列表(在屏幕截图中称为“Lista”),第二个是地图(“Térkép”)。每个视图都有一个左右导航按钮。按右键将地图视图推送到导航控制器。后退按钮是从地图的viewDidLoad方法手动隐藏的。

List view Map view

问题是,为什么每个屏幕上的条形按钮项目大小不同?如何控制按钮的大小?

按钮上的图像尺寸相同。通过外观设置在AppDelegate中完成换肤:

// navbar background
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"bg-titlebar.png"]
                                   forBarMetrics:UIBarMetricsDefault];

// navbar button background
[[UIBarButtonItem appearance] setBackgroundImage:[[UIImage imageNamed:@"btn-main.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(4.0, 4.0, 4.0, 4.0) resizingMode:UIImageResizingModeStretch]
                                        forState:UIControlStateNormal
                                      barMetrics:UIBarMetricsDefault];
[[UIBarButtonItem appearance] setBackgroundImage:[[UIImage imageNamed:@"btn-main-active.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(4.0, 4.0, 4.0, 4.0) resizingMode:UIImageResizingModeStretch]
                                        forState:UIControlStateHighlighted
                                      barMetrics:UIBarMetricsDefault];

// back button background
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:[[UIImage imageNamed:@"btn-back.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(4.0, 12.0, 4.0, 4.0) resizingMode:UIImageResizingModeStretch]
                                                  forState:UIControlStateNormal
                                                barMetrics:UIBarMetricsDefault];
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:[[UIImage imageNamed:@"btn-back-active.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(4.0, 12.0, 4.0, 4.0) resizingMode:UIImageResizingModeStretch]
                                                  forState:UIControlStateHighlighted
                                                barMetrics:UIBarMetricsDefault];

1 个答案:

答案 0 :(得分:1)

你可以通过在一个segue中创建它来获得两个相同的UIBarButtonsItem,然后在另一个segue中复制粘贴按钮(至少这在我的情况下工作但是我无法确定问题的根本原因所以远)。

如果直接创建UIBarButtonItem不起作用,请在NavigationItem中删除一个UIButton,它将自动创建一个内部有UIButton的UIBarButtonItem(参见下图)。通过这种方式,您可以配置UIBarButtonItem中不存在的图像或其他属性。一旦您对UIButton(嵌入在Bar按钮中)的外观感到满意,请将其复制粘贴到不同的segue,它们应保持相同的大小。

UIBarButtonItem vs UIButton inside UIBarButtonItem