Iphone 自定义UINavigationController UINavigationBar

Iphone 自定义UINavigationController UINavigationBar,iphone,uinavigationcontroller,uinavigationbar,Iphone,Uinavigationcontroller,Uinavigationbar,基本上我想要一个定制的UINavigationBar。我不希望它是“半透明”或任何东西,如图片应用程序 我基本上希望完全删除它,但我仍然希望能够在按下导航控制器时添加后退按钮等,并希望视图(例如:UITableViewController)被按下 像这样: 有什么办法可以做到这一点吗 谢谢很难说,可能是UINavigationBar在那里并且颜色与UIView背景匹配,或者没有UINavigationBar,只是一个带有自定义按钮和顶部UILabel的视图。选择一种方法并对其进行编码,或者再问

基本上我想要一个定制的
UINavigationBar
。我不希望它是“半透明”或任何东西,如图片应用程序

我基本上希望完全删除它,但我仍然希望能够在按下导航控制器时添加后退按钮等,并希望视图(例如:
UITableViewController
)被按下

像这样:

有什么办法可以做到这一点吗


谢谢

很难说,可能是
UINavigationBar
在那里并且颜色与
UIView
背景匹配,或者没有
UINavigationBar
,只是一个带有自定义按钮和顶部
UILabel
的视图。选择一种方法并对其进行编码,或者再问一次更详细的问题。

要查看
UINavigationBar
,如果您选择使用,只需:

self.navigationController.navigationBar.translucent=YES;
如果你想让它看起来像你发布的图片,你必须改变色调/颜色以匹配背景

@implementation UINavigationBar (background)

- (void)drawRect:(CGRect)rect {
    UIImage *image = [UIImage imageNamed:@"navigationbar.png"];
    [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}

@end

基本上,这不是完全透明的——这是一个视觉上的谎言。实际操作的唯一方法是重写
UINavigationBar
drawRect:
方法,如上所示。

AppDelegate
子类
UINavigationBar
的开头,如下所示:

@interface CustomNavBar : UINavigationBar

@end

@implementation CustomNavBar

- (void)drawRect:(CGRect)rect {
    UIImage *image = [UIImage imageNamed:@"bar.png"];
    [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}
然后在
AppDelegate
中执行以下魔术:

//Set custom NavigationBar
[self.navController setValue:[[CustomNavBar alloc]init] forKeyPath:@"navigationBar"];
//Set tint to match bar.png
self.navController.navigationBar.tintColor = [UIColor colorWithRed:0.93 green:0.43 blue:0 alpha:1];
//Set font for NavigationBar
[self.navController.navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@"Comfortaa-Bold" size:20], UITextAttributeFont, nil]];

这会让您对
UINavigationController
look&feel有更多的控制。

我不知道如何指定更多。我想要一个透明的导航栏。我是否需要创建自己的导航栏样式元素?在这种情况下-如何知道我是否在根视图控制器上?如果我不在根视图控制器上,我可以只在视图中添加一个“后退”按钮,不是吗?这会使它变得半透明。。。没关系,我找到了另一种方法。。。看我的回答这被认为是不好的做法。。。贾斯汀先生,还有别的方法吗?对不起,我应该提供这个替代方案,而不是仅仅批评一篇旧文章:你可以在
UINavigationBar
的适当子类中重写
drawRect:
,然后将其设置为
UINavigationController
导航栏的类。然而,唯一的“官方”方式设置这个类是通过锡伯。啊,这很公平。无法通过编程方式更改UINavigationController导航栏的类?不是通过官方API,不是,而是。