【发布时间】:2017-09-13 09:01:31
【问题描述】:
我在我的应用程序中使用了自定义后退按钮。这个自定义后退按钮全局设置如下:
UINavigationBar.appearance().backIndicatorImage = UIImage(named: "Back").withRenderingMode(.alwaysOriginal)
UINavigationBar.appearance().backIndicatorTransitionMaskImage = UIImage(asset: .back).withRenderingMode(.alwaysOriginal)
在 iOS 11 之前,此代码可以解决问题,但现在在 iOS 11 中,按钮不再垂直居中,如下所示:
我可以将后退按钮图像的高度更改为 44,但这会在 iOS
编辑:
原来,正如banxii1988所说,问题是由setBackButtonTitlePositionAdjustment引起的,当值故意将标题移到可见屏幕之外时。这是一种避免删除每个视图控制器中的后退按钮标题的技巧。我决定删除这个 hack,我做了正确的事:
- 将故事板中的后退按钮项设置为
" "。 - 在没有关联故事板的每个视图控制器中,我设置
backBarButtonItem以编程方式navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil)
请注意,您在视图控制器中看到的后退按钮标题是在导航堆栈中的前一个标题中设置的。
【问题讨论】:
-
我有同样的问题,在我用 View Debugging 检查它之后。我发现这是因为我们在 BackButtonTitlePositionAdjustment 中使用了一些技巧来隐藏 backButtonTitle。所以 1)navigationItem.title 是必需的,后面的 Indicator 有约束,2)删除棘手的偏移