带图像的自定义后退按钮
Posted
技术标签:
【中文标题】带图像的自定义后退按钮【英文标题】:Custom Back Button With Image 【发布时间】:2014-11-14 18:09:49 【问题描述】:我想做的是改变后退按钮的高度。但是,据我了解,唯一可以更改的选项是宽度。所以,我想我会用我自己的、更小的图像创建一个自定义的后退按钮。现在我使用 viewDidLoad 方法和下面的代码完成了这项工作:
//Setup navigation bar
navigationController?.navigationItem.backBarButtonItem = UIBarButtonItem(image:UIImage(named:"back_arrow.png"), style:UIBarButtonItemStyle.Plain, target:nil, action:nil)
navigationController?.navigationItem.backBarButtonItem!.title = ""
但是,后退按钮仍然是蓝色的、较大的,并且标题为“后退”。我怎样才能让这段代码正常工作?调试器说它正在运行,但它没有改变任何东西。
【问题讨论】:
【参考方案1】:我将向您展示如何在整个应用中执行此操作,而不仅仅是一页。
要更改后退按钮的默认图像,请将以下内容放入您的应用委托didFinishLaunchingWithOptions:
:
斯威夫特:
let backArrowImage = UIImage(named: "customImage")
let renderedImage = backArrowImage?.imageWithRenderingMode(.AlwaysOriginal)
UINavigationBar.appearance().backIndicatorImage = renderedImage
UINavigationBar.appearance().backIndicatorTransitionMaskImage = renderedImage
Obj-c:"
UIImage *backArrowImage = [UIImage imageNamed:@"customImage"];
UIImage *renderedImage = [backArrowImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
[UINavigationBar appearance].backIndicatorImage = renderedImage;
[UINavigationBar appearance].backIndicatorTransitionMaskImage = renderedImage;
要从按钮中删除“返回”文本,请将此类别添加到您的 AppDelegate.m 文件(或您自己的类别)中:
还不知道如何在 Swift 中做到这一点,所以这里是 Obj-c 版本:
@implementation UINavigationItem (LuxeCustomization)
/**
Removes text from all default back buttons so only the arrow or custom image shows up
*/
-(UIBarButtonItem *)backBarButtonItem
return [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil];
@end
【讨论】:
在 swift 中全局删除“返回”按钮标题...见***.com/a/33707584/6059628【参考方案2】:对于颜色,您必须在导航栏上设置色调颜色,也可以将navigationItem.backBarButtonItem
设置为nil
并使用leftbarButtonItem
和自定义按钮图像。
【讨论】:
然后我失去了 backBarButton 的库存返回功能。我只是想改变返回栏按钮的图像,去掉标题,保留返回功能。 是的,但无论如何您都可以在左侧栏按钮处理程序 [self.navigationController popToRootViewController] 中执行此操作以上是关于带图像的自定义后退按钮的主要内容,如果未能解决你的问题,请参考以下文章
iPhone - 如何使用我的纹理背景自定义 UINavigationBar 后退按钮