条形按钮项目未正确对齐

Seb*_*aud 8 objective-c uinavigationbar vertical-alignment uibarbuttonitem ios

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

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

屏幕截图导航栏问题

kas*_*kad 7

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

[self.navigationItem.rightBarButtonItem setTitlePositionAdjustment:UIOffsetMake(-10, -10) 
                                                     forBarMetrics:UIBarMetricsDefault];
Run Code Online (Sandbox Code Playgroud)

-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
}
Run Code Online (Sandbox Code Playgroud)

然后初始化你的 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;
Run Code Online (Sandbox Code Playgroud)

  • 遗憾的是,第一个解决方案不起作用 (3认同)