【问题标题】:Right bar button item not aligned vertically右栏按钮项目未垂直对齐
【发布时间】:2014-09-12 07:17:42
【问题描述】:

我正在使用以下代码从 viewController 中设置 rightbarbuttonitem:

UIBarButtonItem *item = [[UIBarButtonItem alloc]initWithTitle:@"Save" style:UIBarButtonItemStylePlain target:self action:@selector(saveDetails)];
self.navigationItem.rightBarButtonItem = item;

如图所示:

如您所见,出现的按钮未与左按钮项或标题垂直对齐。

我还尝试使用here 提到的代码调整对齐方式:

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

但这会删除自定义字体并将按钮移动得更高。

如何设置对齐的 rightbarbuttonitem 并使用 UIAppearance 代理维护自定义字体集?

编辑:

我什至尝试过使用

[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemSave target:self action:@selector(saveDetails)];

但结果与第一张图片完全一样。

更新(9 月 20 日):

看来我不得不接受亚历山大的回答,有人有更清洁的解决方案吗?

【问题讨论】:

  • 将 systemBarButtonItem 与 UIBarButtonSystemItemSave 一起使用不是您的选择吗?
  • 好吧,我在发布问题后找到了代码。但是,它实际上与我的原始代码相同。

标签: objective-c uibarbuttonitem uinavigationitem ios7.1 rightbarbuttonitem


【解决方案1】:

您可以使用下一个变体:

UIButton *saveButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 80, 20)];
[saveButton addTarget:self action:@selector(saveDetails) forControlEvents:UIControlEventTouchUpInside];
[saveButton setTitle: @"Save" forState:UIControlStateNormal];
[saveButton setTitleEdgeInsets:UIEdgeInsetsMake(5, 0, 0, 0)];
UIBarButtonItem *item =[[UIBarButtonItem alloc] initWithCustomView:saveButton];
self.navigationItem.rightBarButtonItem = item;

【讨论】:

  • 我做了,结果更好。这将是我最后的手段,因为将按钮调整到正确位置需要一些时间。
【解决方案2】:

我尝试了答案,但似乎没有用。

我的解决方案是将UIButton 添加为UIBarButtonItem。如果听起来令人困惑,只需将 UIButton 从 Interface Builder 拖到 storyboardnavigationBar 上的 LeftRightBarButtonItem 的位置即可。

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-03
    • 1970-01-01
    • 1970-01-01
    • 2019-02-25
    • 2021-09-03
    • 2019-01-28
    相关资源
    最近更新 更多