UINavigationBar自定义导航栏

本文介绍了一种在iOS应用中自定义UINavigationBar的方法,包括背景和按钮样式,支持屏幕旋转,并确保每个视图控制器都能拥有独立的导航栏外观。通过Objective-C实现,附带示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


 

UINavigationBar自定义导航栏背景和按钮,完美支持横屏竖屏旋转,视图控制器可以分别使用自己的导航栏


此方法可以通过Apple审核,导航上的按钮背景需要做,否则看起来不那么和之又谐

 

 

Objective-c代码 复制代码  收藏代码
  1. //CustomNavigationBar.h   
  2. @interface UINavigationBar (UINavigationBarCategory)   
  3. UIImageView *backgroundView;   
  4. - (void)setBackgroundImage:(UIImage*)image;   
  5. - (void)insertSubview:(UIView *)view atIndex:(NSInteger)index;   
  6. @end   
  7.   
  8. //CustomNavigationBar.m   
  9. @implementation UINavigationBar (UINavigationBarCategory)   
  10. -(void)setBackgroundImage:(UIImage*)image   
  11. {   
  12.     if(image == nil)   
  13.     {   
  14.         [backgroundView removeFromSuperview];   
  15.     }   
  16.     else   
  17.     {   
  18.         backgroundView = [[UIImageView alloc] initWithImage:image];   
  19.         backgroundView.tag = 1;   
  20.         backgroundView.frame = CGRectMake(0.f, 0.f, self.frame.size.width, self.frame.size.height);   
  21.         backgroundView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;   
  22.         [self addSubview:backgroundView];   
  23.         [self sendSubviewToBack:backgroundView];   
  24.         [backgroundView release];   
  25.     }   
  26. }   
  27.   
  28. //for other views   
  29. - (void)insertSubview:(UIView *)view atIndex:(NSInteger)index   
  30. {   
  31.     [super insertSubview:view atIndex:index];   
  32.     [self sendSubviewToBack:backgroundView];   
  33. }   
  34. @end   
  35.   
  36. //YourViewController.m   
  37. - (void)viewWillAppear:(BOOL)animated   
  38. {   
  39.     [super viewWillAppear:animated];   
  40.     [self.navigationController.navigationBar   
  41.         setBackgroundImage:[UIImage imageNamed:@"navigation_bar_bg.png"]];   
  42. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值