关闭模式视图控制器后如何正确对齐 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?的主要内容,如果未能解决你的问题,请参考以下文章

使用情节提要时关闭模式的正确方法是啥?

如何在 iPhone 屏幕中正确对齐显示控制器?

关闭模式视图但保留数据

在关闭另一个模式视图控制器后呈现一个模式视图控制器

CarbonKit CarbonTabSwipeNavigation,视图控制器未正确对齐

应用程序关闭后如何快速保存全局变量?