更改UINavigationBar返回按钮的后退箭头位置

6

在自定义的UINavigationBar子类中,调整返回按钮箭头的位置是否可能?这是因为在具有自定义调整高度的导航栏中,该位置不正确。

2个回答

19

我最终按照以下方法进行了修复,使用了imageWithAlignmentRectInsets:

 self.backIndicatorImage = UIImage(named: "back_detail")?.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal).imageWithAlignmentRectInsets(UIEdgeInsetsMake(0, 0, -3, 0))
 self.backIndicatorTransitionMaskImage = UIImage(named: "back_detail")?.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal).imageWithAlignmentRectInsets(UIEdgeInsetsMake(0, 0, -3, 0))

编辑

添加了更多的解释以澄清实现方法:

class VDLNavigationBar: UINavigationBar {

    override func awakeFromNib() {
        // Back button
        self.backIndicatorImage = UIImage(named: "back_detail")?.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal).imageWithAlignmentRectInsets(UIEdgeInsetsMake(0, 0, -3, 0))
        self.backIndicatorTransitionMaskImage = UIImage(named: "back_detail")?.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal).imageWithAlignmentRectInsets(UIEdgeInsetsMake(0, 0, -3, 0))    
    }
}

在您的UINavigationController中使用此自定义子类


backIndicatorTransitionMaskImage是什么,你是如何将其分配给返回按钮的? - gabbler
1
请检查我刚刚做的修改,你需要创建一个UINavigationBar的子类。 - Antoine
2
谢谢您的回复,使用UIAppearance也可以实现这个效果。不过似乎顶部插入值对图像位置没有影响,而底部插入值有影响。我已经尝试了好几个小时,从未想到要设置底部插入值,直到看到您的答案! - Rajiev Timal
1
很高兴听到这个好消息。是的,这并不总是解决我们神奇像素问题的最常见方法! :) - Antoine

-2

你也可以尝试设置 UINavigationBar 的 hidden 属性为 "True",并使用 UIView 代替 UINavigationBar。

当您想要自定义 UITabBarController 的 TabBar 时,这也是一个不错的选择。


当然,那样做可以解决问题,但这不是这个问题需要的答案,因为他已经在使用UINavigationBar了。 - Antoine
我刚开始使用 Stack Overflow。那么既然你已经回答了问题,我就不应该提供其他解决方案了吗?我过去常在 Stack Overflow 上寻找答案,但这是我第一次知道在你投票反对后只能有一个答案。 - Don Chen
首先欢迎来到SO!不,这实际上是好事,因为并不是每个答案都适用于所有人。只需确保您的答案符合问题即可。 - Antoine
好的~~我会记住的~ - Don Chen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接