条形按钮项目未正确对齐

Posted

技术标签:

【中文标题】条形按钮项目未正确对齐【英文标题】:Bar Button Item not correctly aligned 【发布时间】:2014-06-26 02:30:29 【问题描述】:

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

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

【问题讨论】:

这看起来不像标准 UIBarButtonItem 的默认字体。您是否正在修改任何 barbutton 字体属性?也许与 UIAppearance? 您想知道为什么“新游戏”略低于“棋盘”标题? 是的,我使用的是 Avenir Next,但我在另一个应用程序中使用了这种字体,并且导航栏没有问题。 [[UIBarButtonItem 外观] setTitleTextAttributes:@NSForegroundColorAttributeName: [UIColor whiteColor], NSFontAttributeName: [UIFont fontWithName:@"Avenir Next" size:18.0] forState:UIControlStateNormal]; [[UINavigationBar 外观] setTitleTextAttributes:@NSForegroundColorAttributeName: [UIColor whiteColor], NSFontAttributeName: [UIFont fontWithName:@"AvenirNext-DemiBold" size:18.0]]; 我会尝试减小字体大小。 这听起来像是字体大小问题。需要明确的是,“董事会”是 title 还是 titleView 【参考方案1】:

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

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

-10 -10 - 仅举例

您可以使用自定义UIButton 初始化您的newGameItem。自定义按钮是 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;

【讨论】:

第二种解决方案确实有效,尽管不是那么优雅。谢谢!【参考方案2】:

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

我可以通过使用[self.navigationItem setRightBarButtonItem:rightItem animated:YES] 而不是属性设置器来轻松解决错位问题。

【讨论】:

【参考方案3】:

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

【讨论】:

【参考方案4】:

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

【讨论】:

以上是关于条形按钮项目未正确对齐的主要内容,如果未能解决你的问题,请参考以下文章

条形按钮项目未添加

条形按钮项目未在 SWIFT 中显示

引导轮播未正确对齐项目

在 react-native 项目中,iOS 的 RTL 文本未正确对齐

具有自定义视图的 UIBarButtonItem 在 iOS 7 上用作左侧或右侧导航栏项目时未正确对齐

UIBarButtonItem在用作左侧或右侧导航栏项目时,自定义视图未在iOS 7上正确对齐