Dom*_*man 7 user-interface customization navigationitem ios backbarbuttonitem
我正在尝试使用自定义图像自定义backBarButtonItem(文本"back"包含在该图像中),这是当前结果:
有谁知道为什么会发生这种情况?
这是我在viewDidLoad上的代码(实际上在父控制器上运行,然后在具有后退按钮的新控制器上运行)
UIImage *backButtonImage = [UIImage imageNamed:@"Graphics/Shared/navigation_back_button.png"];
UIBarButtonItem *backButton = [[UIBarButtonItem alloc]
initWithImage:backButtonImage
style:UIBarButtonItemStylePlain
target:nil
action:nil];
self.navigationItem.backBarButtonItem = backButton;
Run Code Online (Sandbox Code Playgroud)
编辑:我顺便使用iOS 5!也许外观代理是可用的,但到目前为止,当我尝试将它用于后退按钮时(在appDelegate中)应用程序简单崩溃.
Dom*_*man 16
好吧,我解决了这个问题,使用了一些粗略的技巧,但至少它有效.如果有人想出更标准的解决方案,请告诉我!
这是我的代码:
UIImage *backButtonImage = [[UIImage imageNamed:@"Graphics/Shared/navigation_back_button.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButtonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(0, backButtonImage.size.height*2) forBarMetrics:UIBarMetricsDefault];
Run Code Online (Sandbox Code Playgroud)
这是我appdelegate的方法:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
Run Code Online (Sandbox Code Playgroud)
为了在将它用作背景时阻止它拉伸,我使用了iOS 5中的想法:如何实现自定义(图像)后退按钮
但后来调整它而不是必须设置 -
self.title = @" ";
Run Code Online (Sandbox Code Playgroud)
在每个视图加载(也可能与导航栏标题本身混乱)
我只是将"后退"按钮文本的偏移设置为图像高度的两倍,因此您永远不会看到它.
为什么要解决所有这些麻烦,而不是使用带有自己方法的左键按钮来弹出视图控制器?
主要原因是您丢失了标准后退按钮滑动动画以更改视图.此外,这意味着我不需要使用自定义按钮或编写自定义方法返回.它只是起作用.
希望这也解决了别人的问题,我知道我坚持了3个小时!