UINavigationController 的自定义修剪后退按钮文本
Posted
技术标签:
【中文标题】UINavigationController 的自定义修剪后退按钮文本【英文标题】:Custom Trimming Back button text of UINavigationController 【发布时间】:2014-11-10 04:43:30 【问题描述】:环境:
我正在为我的 ios 应用开发应用内区域设置更改支持。
这比听起来要难,因为UIKit
提供的控件语言环境与 iOS 语言环境相关联。
我几乎可以解决问题,但现在还剩下一件事:
问题:
当我们使用 UINavigationController
推送视图控制器时。
它会自动生成带有前一个视图控制器的导航项标题的后退按钮项。
但是,如果标题太长而无法作为后退按钮显示,UINavigationController
使用 Back
作为后备标题。
自动缩短标题(后退)与系统语言环境相关。这是我的问题。
我可以合法地改变这种行为吗?
【问题讨论】:
【参考方案1】:我自定义了UINavigationController
并覆盖了pushViewController:animated:
-(void)pushViewController:(UIViewController *)viewController
animated:(BOOL)animated
UINavigationItem* current = self.topViewController.navigationItem;
if(current.backBarButtonItem == nil)
current.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:current.title style:UIBarButtonItemStylePlain target:nil action:nil];
UIBarButtonItem* backItem = current.backBarButtonItem;
CGFloat width = [backItem.title sizeWithAttributes:@].width;
// Trimming to localized back text
if(width > 70)
backItem.title = [[KKCoreLocale shared] localizedStringForKey:@"Back"];
[super pushViewController:viewController animated:animated];
我不能确定这是最好的解决方案,但是它是合法的并且很有魅力。
【讨论】:
以上是关于UINavigationController 的自定义修剪后退按钮文本的主要内容,如果未能解决你的问题,请参考以下文章
以编程方式在 UINavigationController 中设置 UINavigationBar 的自定义子类
访问 UIViewController 中的自定义 UINavigationController 属性和方法
使用 UINavigationController 默认 UIToolbar 的自定义背景
带有按钮的自定义 UINavigationController