条形按钮项目未正确对齐

时间:2014-05-08 15:30:04

标签: ios objective-c uinavigationbar vertical-alignment uibarbuttonitem

我的导航栏出现问题,UIBarButtonItem未正确垂直对齐。我不知道为什么,因为我使用的是简单的UIBarButtonItem,而不是自定义视图。请参阅下面的代码并感谢您的帮助!

UIBarButtonItem *newGameItem = [[UIBarButtonItem alloc] initWithTitle:@"New Game" style:UIBarButtonItemStyleDone target:self action:@selector(newGame)];
self.navigationItem.rightBarButtonItem = newGameItem;

Screenshot navigation bar issue

4 个答案:

答案 0 :(得分:7)

实际上,有几种方法可以对齐条形按钮。 尝试使用以下方法调整按钮标题位置:

[self.navigationItem.rightBarButtonItem setTitlePositionAdjustment:UIOffsetMake(-10, -10) 
                                                     forBarMetrics:UIBarMetricsDefault];

-10 -10 - 仅举例来说

您可以使用自定义newGameItem初始化UIButton。自定义按钮是UIButton的子类,已重写此方法

- (UIEdgeInsets)alignmentRectInsets {
    return UIEdgeInsetsMake(0, -10, 0, 15.0f); // here you can play with values to align your button properly
}

然后初始化您的newGameItem

CustomBarButton *button = [CustomBarButton buttonWithType:UIButtonTypeCustom];
[button setTitle:@"New game" forState:UIControlStateNormal];
button.frame = CGRectMake (0, 0, 60, 40);
[button addTarget:self action:@selector(newGame) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *newGameItem = [[UIBarButtonItem alloc] initWithCustomView:button];
self.navigationItem.rightBarButtonItem = newGameItem;

答案 1 :(得分:1)

我在左边的按钮上遇到了同样的问题,我能够在Xcode 6.3.1中修复它:选择按钮(条形按钮项目)右列选项卡“标尺”插入图像顶部值:-54而不是0。 请注意:我的设备是带有iOS 7的iPhone4,该按钮在Xcode中完全就位并且在设备上放错位置,现在它已在设备上就位并放错在Xcode中

答案 2 :(得分:1)

我遇到了类似的问题:我们通过UIAppearance使用自定义字体用于导航标题和条形按钮项目,在某些情况下,正确的项目是垂直未对齐的。

我可以使用[self.navigationItem setRightBarButtonItem:rightItem animated:YES]代替属性设置器轻松修复错位。

答案 3 :(得分:0)

不幸的是,关于UIBarButtonItem垂直间距,您无能为力。我相信您必须在UINavigationBar上增加标题的字体大小(您也可以使用UIAppearance执行此操作),或者减少UIBarButtonItem的字体大小