创建UINavigationBar
的子类,其中不包含除drawRect:
之外的其他方法。如果需要,请将自定义绘图代码放在那里,否则将它留空(但实现它)。
接下来,将UINavigationController
的导航栏设置为此子类。在代码中使用initWithNavigationBarClass:toolBarClass:
,或者如果使用storyboard/nibs(它是侧面层次结构中UINavigationController的子类),则只需在Interface Builder中更改它即可。
最后,获取您的导航栏的引用,以便我们可以在包含的视图控制器的loadView
中使用self.navigationController.navigationBar
对其进行配置。将导航栏的translucent
设置为YES
和backgroundColor
至[UIColor clearColor]
。下面的例子。
//CustomNavigationBar.h
#import <UIKit/UIKit.h>
@interface CustomNavigationBar : UINavigationBar
@end
//CustomNavigationBar.m
#import "CustomNavigationBar.h"
@implementation CustomNavigationBar
- (void)drawRect:(CGRect)rect {}
@end
//Put this in the implementation of the view controller displayed by the navigation controller
- (void)viewDidLoad
{
[super viewDidLoad];
self.navigationController.navigationBar.translucent = YES;
[self navigationController].navigationBar.backgroundColor = [UIColor clearColor];
}
这里的结果的屏幕截图,模仿瘟疫。
蓝色边框吸进drawRect:
向您展示一个UINavigationBar的是存在的,不只是一个按钮和一个标签。我在子类中实现了sizeThatFits:
以使高度更高。按钮和标签都是UIView的,它包含正确的UI元素,这些UI元素作为UIBarButtonItems放在条中。我首先将它们嵌入到视图中,以便我可以改变它们的垂直对齐(否则当我实施sizeThatFits:
时,它们会“卡”到底部)。
我很难想象一个带有可见按钮的不可见导航栏如何看起来不太奇怪。你能给出一个具有你想要的行为的应用程序的例子吗? – Darren
游戏“瘟疫”是我唯一能记住的头脑。怪异全部取决于你如何设计你的界面。 – PappaSmalls