gpt4 book ai didi

iphone - 自定义导航栏隐藏按钮

转载 作者:行者123 更新时间:2023-12-03 21:19:47 27 4
gpt4 key购买 nike

希望您也能帮忙解决这个问题...我想通过添加自定义背景图片来自定义我的导航栏。我发现了完美但有点复杂的方法,称为:NavigationSwizzle。在之前的项目中,我工作时没有遇到任何严重问题,但现在我陷入了困境......

从我的 AppDelegate 中,我调用这个静态方法:

@implementation SCAppUtils
+ (void)customizeNavigationController:(UINavigationController *)navController
{
//Customizing navigation BAR
UINavigationBar *navBar = [navController navigationBar];
[navBar setTintColor:kSCNavBarColor];

//Customizing TOOLBAR
[navController setToolbarHidden:NO animated:YES];

UIToolbar *toolBar = [navController toolbar];

UIImageView *imageView = (UIImageView *)[navBar viewWithTag:kSCNavBarImageTag];
UIImageView *imageView2 = (UIImageView *)[toolBar viewWithTag:kSCNavBarImageTag];

if (imageView == nil)
{
Utilities *utilities = [[Utilities alloc]init];

UIImage *img = [UIImage imageNamed:@"nav-bar-background.png"];
UIImage *img2 = [UIImage imageNamed:@"toolbar-background.png"];

imageView = [[UIImageView alloc] initWithImage:img];
imageView2 = [[UIImageView alloc] initWithImage:img2];

[imageView setTag:kSCNavBarImageTag];
[imageView2 setTag:kSCNavBarImageTag];

[navBar insertSubview:imageView atIndex:0];
[toolBar insertSubview:imageView2 atIndex:0];

[imageView release];
[imageView2 release];
[utilities release];

}

}

在 rootNavigationController 中,通过将其插入堆栈调用第二个 View Controller 后,我的右键、self.title、activityIndi​​cator 不显示。如果我在 [navBar insertSubview:imageView atIndex:0]; 行中评论或设置 atIndex:-1 ,则按钮会显示,但我的自定义背景消失了,我得到的是普通 iPhone导航选项卡。

rootNavigationControllerdidSelectRowAtIndex 中,我有:

//ADD BACK BUTTON TO VIEW
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Home" style:UIBarButtonItemStyleDone target:nil action:nil];
self.navigationItem.backBarButtonItem = backButton;

//Home Button color
self.navigationController.navigationBar.tintColor = [UIColor colorWithRed:166.0 / 255 green:179.0 / 255 blue:191.0 / 255 alpha:1.0];

//PUSH TO NEXT VIEW
[self.navigationController pushViewController:detailViewController animated:YES];

提前谢谢您...

如果您需要更多代码或解释,请随时询问我...

最诚挚的问候,卢卡

编辑:

好吧,我可以让这个问题变得更简单。我的导航栏中有一个自定义背景图像。这张图片显然遮住了我的

self.navigationItem.title = @"TITLE";

如果我将 alpha 设置为:背景中 imageView 的 0.3,我可以看到我的标题:

imageView = [[UIImageView alloc] initWithImage:image];
[imageView setAlpha:0.3];
[imageView setTag:kSCNavBarImageTag];
[navBar insertSubview:imageView atIndex:0];

所以问题是如何将 navigationItem.title 发送到前面?它是 UIView 类的后代吗?

编辑2:真正奇怪的是,标题在 rootController 中可见(背景图像上方),但在推送另一个 viewController 后,标题出现在背景 imageView 后面?!

最佳答案

老实说,我认为您忘记在 main.m 中添加此代码。你的 main.m 应该看起来像这样:

#import <UIKit/UIKit.h>
#import "AppDelegate.h"
#import "SCClassUtils.h"

int main(int argc, char *argv[])
{
[SCClassUtils swizzleSelector:@selector(insertSubview:atIndex:)
ofClass:[UINavigationBar class]
withSelector:@selector(scInsertSubview:atIndex:)];
[SCClassUtils swizzleSelector:@selector(sendSubviewToBack:)
ofClass:[UINavigationBar class]
withSelector:@selector(scSendSubviewToBack:)];

@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}

关于iphone - 自定义导航栏隐藏按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5914662/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com