条形按钮项目未正确对齐
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
的字体大小。
【讨论】:
以上是关于条形按钮项目未正确对齐的主要内容,如果未能解决你的问题,请参考以下文章
在 react-native 项目中,iOS 的 RTL 文本未正确对齐