1

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

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

如图所示:

导航项

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

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

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

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

带调整的导航项

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

编辑:

我什至尝试使用

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

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

更新(9 月 20 日):

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

4

2 回答 2

2

您可以使用下一个变体:

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;
于 2014-09-12T08:16:05.397 回答
1

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

我的解决方案是添加UIButtonUIBarButtonItem. 如果这听起来令人困惑,只需将一个从UIButtonInterface Builder拖到您LeftRightBarButtonItem.navigationBarstoryboard

希望能帮助到你。

于 2017-09-11T16:49:57.000 回答