iOS-自定义标签及其控件(一)
2016-07-22 10:45
435 查看
#pragma mark - 自定义标签及其控件 - (void) createTabBar { //1.加载背景图片 self.tabBar.backgroundImage = [UIImage imageNamed:@"splash_bottom"]; //2. 定义按钮 //1) 将按钮的图片名存放在数组中 NSArray *imageArray = @[ @"trends", @"find", @"message", @"my" ]; //2) 每个button(item)的宽度,注意超过5个的情况,会有一个更多按钮 float buttonWidth = kScreenWidth / imageArray.count; //3) 使用for循环,创建5个button for (int i = 0; i < imageArray.count; i++) { //a) 从数组中获取图片的名称 NSString *imageName = imageArray[i]; //b) 设置普通图片名称 NSString *normalImageName = [NSString stringWithFormat:@"trends_%@_normal", imageName]; //c) 设置点击状态的图片名称 NSString *clickImageName = [NSString stringWithFormat:@"trends_%@_click", imageName]; //d) 定义一个button UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; //e) 设置tag button.tag = 1000 + i; //f) 设置frame button.frame = CGRectMake(i * buttonWidth, 0, buttonWidth, 49); //g) 设置图片的效果 [button setImage:[UIImage imageNamed:normalImageName] forState:UIControlStateNormal]; [button setImage:[UIImage imageNamed:clickImageName] forState:UIControlStateSelected]; //h) 响应时间 [button addTarget:self action:@selector(buttonTabBarAction:)
forControlEvents:UIControlEventTouchUpInside];
//i) 添加到tabBar
[self.tabBar addSubview:button];
//j) 默认选中第一个按钮 if (i == 0) { button.selected = YES; } } } #pragma mark - 标签的选择响应事件 - (void) buttonTabBarAction: (UIButton *) button { //1) 通过button的tag来进行选择不同的标签 self.selectedIndex = button.tag - 1000; //2) 图片的效果修改 for (int i = 0; i < 4; i++) { //a) 获取button UIButton *buttonWithTag = (UIButton *)[self.tabBar viewWithTag:1000 + i]; //b) 判断:如果选择的button的tag和获取的tag一致,那么就修改其button的图片 if (buttonWithTag.tag == button.tag) { buttonWithTag.selected = YES; } else { buttonWithTag.selected = NO; } } } #pragma mark - 使用viewDidAppear来消除“重影” - (void) viewDidAppear:(BOOL)animated { //移除系统自带的标签栏 [self removeUITabBarButton]; } #pragma mark - 移除系统自带的标签栏 - (void) removeUITabBarButton { //-----------------移除系统自带的tabBarButton----------------- //1) 循环获取标签栏的所有的子视图 for (UIView *view in self.tab Bar.subviews) { //2) 比较,如果视图是系统自带的,那么就移除 // 方法说明:NSClassFromString -----> 通过字符串获取类名 if ([view isKindOfClass:NSClassFromString(@"UITabBarButton")]) { [view removeFromSuperview]; } //3) 有些视图中可能会出现比较诡异的横线,这里提供一种移除方案,特别说明:本案例中无此问题 if ([view isKindOfClass:[UIImageView class]] && view.bounds.size.height <= 1) { [view removeFromSuperview]; } } }
相关文章推荐
- flex 控件的重要属性
- 学习Winform文本类控件(Label、Button、TextBox)
- Delphi控件ListView的属性及使用方法详解
- web下载的ActiveX控件自动更新
- WinForm实现按名称递归查找控件的方法
- C#中父窗口和子窗口之间控件互操作实例
- C#编写ActiveX网页截图控件
- Android编程之Button控件用法实例分析
- Android控件之CheckBox、RadioButton用法实例分析
- 在Android开发中使用自定义组合控件的例子
- 一款超酷的Android自定义加载控件
- Android重写View实现全新的控件
- MFC中动态创建控件以及事件响应实现方法
- WinForm自定义函数FindControl实现按名称查找控件
- Android控件之ProgressBar用法实例分析
- WinForm拖拽控件生成副本的解决方法
- ASP.NET动态添加用户控件的方法
- WinForm遍历窗体所有子控件的方法
- ASP.NET的HtmlForm控件学习及Post与Get的区别概述
- 浅析Bootstrap验证控件的使用