右侧的条形按钮项目未垂直对齐

时间:2014-09-12 07:17:42

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

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

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

出现如图所示:

navigationitem

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

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

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

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

navigation item with adjustment

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

编辑:

我甚至尝试过使用

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

但结果完全如第一张图片所示。

更新(9月20日):

似乎我必须采用亚历山大的答案,任何人都有更清洁的解决方案吗?

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

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

我的解决方案是将UIButton添加为UIBarButtonItem。如果听起来有点混乱,只需将UIButton从Interface Builder拖到Left RightBarButtonItemnavigationBarstoryboard的位置。

希望它有所帮助。