自定义tabBar

本文介绍了一种使用Objective-C自定义UITabBarController的实现方法,通过创建XNTabBarController类来替换默认的底部导航栏,并展示了如何添加自定义按钮XNTabBarButton以实现不同的视觉效果和交互。
  1. //  
  2. //  XNTabBarController.m  
  3. //  
  4. //  
  5. //  Created by neng on 14-6-19.  
  6. //  Copyright (c) 2014年 neng. All rights reserved.  
  7. //  
  8.   
  9. #import "XNTabBarController.h"  
  10. #import "Common.h"  
  11. #import "XNTabBarButton.h"  
  12.   
  13. @interface XNTabBarController ()  
  14.   
  15. @property (nonatomicweak) UIButton *selectedBtn;  
  16. @end  
  17.   
  18. @implementation XNTabBarController  
  19.   
  20. (void)viewDidLoad  
  21.     [super viewDidLoad];  
  22.     //下面两个方法在开发中是经常会用到的  
  23. //    NSLog(@"%s",__func__);  
  24. //    NSLog(@"%@",self.view.subviews); //能打印出所有子视图,和其frame  
  25.     LogFun;  
  26.     LogSubviews(self.view);  
  27.   
  28.   
  29.     //删除现有的tabBar  
  30.     CGRect rect self.tabBar.frame 
  31.     [self.tabBar removeFromSuperview];  //移除TabBarController自带的下部的条  
  32.   
  33.     //测试添加自己的视图  
  34.     UIView *myView [[UIView alloc] init];  
  35.     myView.frame rect;  
  36.     myView.backgroundColor [UIColor redColor];  
  37.     [self.view addSubview:myView];  
  38.   
  39.     for (int 05i++)  
  40.         //UIButton *btn [[UIButton alloc] init];  
  41.         XNTabBarButton *btn [[XNTabBarButton alloc] init];  
  42.           
  43.         NSString *imageName [NSString stringWithFormat:@"TabBar%d"+ 1];  
  44.         NSString *imageNameSel [NSString stringWithFormat:@"TabBar%dSel"+ 1];  
  45.   
  46.         [btn setImage:[UIImage imageNamed:imageName] forState:UIControlStateNormal];  
  47.         [btn setImage:[UIImage imageNamed:imageNameSel] forState:UIControlStateSelected];  
  48.   
  49.         CGFloat i myView.frame.size.width 5 
  50.         btn.frame CGRectMake(x, 0myView.frame.size.width 5myView.frame.size.height);  
  51.   
  52.         [myView addSubview:btn];  
  53.           
  54.         btn.tag i;//设置按钮的标记, 方便来索引当前的按钮,并跳转到相应的视图  
  55.   
  56.         //带参数的监听方法记得加"冒号"  
  57.         [btn addTarget:self action:@selector(clickBtn:) forControlEvents:UIControlEventTouchUpInside];  
  58.   
  59.         //设置刚进入时,第一个按钮为选中状态  
  60.         if (0 == i)  
  61.             btn.selected YES 
  62.             self.selectedBtn btn;  //设置该按钮为选中的按钮  
  63.          
  64.      
  65.  
  66.   
  67.   
  68. (void)clickBtn:(UIButton *)button  
  69.     //1.先将之前选中的按钮设置为未选中  
  70.     self.selectedBtn.selected NO 
  71.     //2.再将当前按钮设置为选中  
  72.     button.selected YES 
  73.     //3.最后把当前按钮赋值为之前选中的按钮  
  74.     self.selectedBtn button;  
  75.       
  76.     //4.跳转到相应的视图控制器. (通过selectIndex参数来设置选中了那个控制器)  
  77.     self.selectedIndex button.tag 
  78.  
  79.   
  80. @end  

 

XNTabBarButton.h

 

[objc]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. #import   
  2.   
  3. @interface XNTabBarButton UIButton  
  4.   
  5. @end  

 

 

XNTabBarButton.m

 

[objc]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. #import "XNTabBarButton.h"  
  2.   
  3. @implementation XNTabBarButton  
  4.   
  5. (void)setHighlighted:(BOOL)highlighted{  
  6. //    [super setHighlighted:highlighted];  
  7.  
  8.   
  9. @end
内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值