UINavigationBar自定义导航栏背景和按钮
UINavigationBar自定义导航栏背景和按钮,完美支持横屏竖屏旋转,视图控制器可以分别使用自己的导航栏
此方法可以通过Apple审核,导航上的按钮背景需要做,否则看起来不那么和之又谐
?
?
Objective-c代码 ?
- //CustomNavigationBar.h??
- @interface?UINavigationBar?(UINavigationBarCategory)??
- UIImageView?*backgroundView;??
- -?(void)setBackgroundImage:(UIImage*)image;??
- -?(void)insertSubview:(UIView?*)view?atIndex:(NSInteger)index;??
- @end??
- ??
- //CustomNavigationBar.m??
- @implementation?UINavigationBar?(UINavigationBarCategory)??
- -(void)setBackgroundImage:(UIImage*)image??
- {??
- ????if(image?==?nil)??
- ????{??
- ????????[backgroundView?removeFromSuperview];??
- ????}??
- ????else??
- ????{??
- ????????backgroundView?=?[[UIImageView?alloc]?initWithImage:image];??
- ????????backgroundView.tag?=?1;??
- ????????backgroundView.frame?=?CGRectMake(0.f,?0.f,?self.frame.size.width,?self.frame.size.height);??
- ????????backgroundView.autoresizingMask?=?UIViewAutoresizingFlexibleWidth?|?UIViewAutoresizingFlexibleHeight;??
- ????????[self?addSubview:backgroundView];??
- ????????[self?sendSubviewToBack:backgroundView];??
- ????????[backgroundView?release];??
- ????}??
- }??
- ??
- //for?other?views??
- -?(void)insertSubview:(UIView?*)view?atIndex:(NSInteger)index??
- {??
- ????[super?insertSubview:view?atIndex:index];??
- ????[self?sendSubviewToBack:backgroundView];??
- }??
- @end??
- ??
- //YourViewController.m??
- -?(void)viewWillAppear:(BOOL)animated??
- {??
- ????[super?viewWillAppear:animated];??
- ????[self.navigationController.navigationBar??
- ????????setBackgroundImage:[UIImage?imageNamed:@"navigation_bar_bg.png"]];??
- }?