关闭模式视图控制器后如何正确对齐 rightBarButtonItem?
Posted
技术标签:
【中文标题】关闭模式视图控制器后如何正确对齐 rightBarButtonItem?【英文标题】:How to correctly align rightBarButtonItem after dismissing a modal view controller? 【发布时间】:2013-11-16 00:57:28 【问题描述】:从 ios 7 开始,我的 UINavigationBar 中的 rightBarButtonItem 在关闭模式视图控制器后会向下移动。顶部屏幕截图显示了正确的对齐方式。底部屏幕截图显示了关闭模态视图控制器后的错误对齐方式。
- (void) viewDidLoad
[super viewDidLoad];
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]
initWithTitle:@""
style:UIBarButtonItemStyleDone
target:self
action:@selector(didPressRightBarButtonItem)
];
[self.navigationItem.rightBarButtonItem
setImage:[UIImage imageNamed:@"shareLightFlat"]
];
- (void) didPressRightBarButtonItem
[self.navigationController
presentViewController:[[SomePage alloc] init]
animated:YES
completion:nil];
在 SomePage 中,我使用它来关闭自己:
[self dismissViewControllerAnimated:YES completion:nil];
【问题讨论】:
【参考方案1】:你不需要使用 initWithTitle:@""
试试这个:
UIBarButtonItem *editBarButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"myImage"] style:UIBarButtonItemStyleDone target:self action:@selector(myAction:)];
self.navigationItem.rightBarButtonItems = @[editBarButton];
【讨论】:
这是正确答案!非常感谢@Pagly! +1 这比 rdelmar 的回答效果更好。将标题设置为单个空格将创建一个小的转变。【参考方案2】:我不知道为什么会这样,但是当我测试这个时,如果我将按钮的标题从 @"" 更改为 @" ",它就可以了。看看这是否适合你(我从你那里得到的结果有些不同 - 我的按钮总是放错地方,不仅在演示和解雇之后)。
【讨论】:
该死的热血!神奇的解决方案,但它的工作原理!它看起来像一个无法处理空字符串的系统错误。 这些个月后,我又遇到了同样的问题。这一次,按钮由于不同的原因下降到更低的位置。如果您有一个仅带有图像的按钮并且您不小心使用了self.navigationItem.rightBarButtonItem = @"some text"
,它将降低按钮而不实际设置文本。这只是一个友好的提醒。【参考方案3】:
您正在分配一个 UIBarButtonItemStyleDone 样式按钮,然后设置图像。我认为它会更好地使用:
UIButton * aButton = [UIButton buttonWithType:UIButtonTypeCustom];
... // Set frame and addTarget
[aButton setImage:[UIImage imageNamed:@"shareLightFlat"] forState:UIControlStateNormal];
UIBarButtonItem * editBarButton = [[UIBarButtonItem alloc] initWithCustomView:aButton];
我没有看到任何与 iOS7 相关的问题。
【讨论】:
我在 iOS 6 中使用“完成”样式来获得较暗的背景。在 iOS 7 中,该样式被忽略,因为按钮在 iOS 7 中没有样式。以上是关于关闭模式视图控制器后如何正确对齐 rightBarButtonItem?的主要内容,如果未能解决你的问题,请参考以下文章