- 浏览: 2195699 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (1240)
- mac/IOS (287)
- flutter (1)
- J2EE (115)
- android基础知识 (582)
- android中级知识 (55)
- android组件(Widget)开发 (18)
- android 错误 (21)
- javascript (18)
- linux (70)
- 树莓派 (18)
- gwt/gxt (1)
- 工具(IDE)/包(jar) (18)
- web前端 (17)
- java 算法 (8)
- 其它 (5)
- chrome (7)
- 数据库 (8)
- 经济/金融 (0)
- english (2)
- HTML5 (7)
- 网络安全 (14)
- 设计欣赏/设计窗 (8)
- 汇编/C (8)
- 工具类 (4)
- 游戏 (5)
- 开发频道 (5)
- Android OpenGL (1)
- 科学 (4)
- 运维 (0)
- 好东西 (6)
- 美食 (1)
最新评论
-
liangzai_cool:
请教一下,文中,shell、C、Python三种方式控制led ...
树莓派 - MAX7219 -
jiazimo:
...
Kafka源码分析-序列5 -Producer -RecordAccumulator队列分析 -
hp321:
Windows该命令是不是需要安装什么软件才可以?我试过不行( ...
ImageIO读jpg的时候出现javax.imageio.IIOException: Unsupported Image Type -
hp321:
Chenzh_758 写道其实直接用一下代码就可以解决了:JP ...
ImageIO读jpg的时候出现javax.imageio.IIOException: Unsupported Image Type -
huanghonhpeng:
大哥你真强什么都会,研究研究。。。。小弟在这里学到了很多知识。 ...
android 浏览器
我们都知道在IOS7之前,Xcode中自带的UITabBarController控制器的tabbar样子很难看,可有时又想利用UITabBarController来快速切换界面,这样就牵扯到要自定义其中的tabbar。那么,如何才能自定义一个tabbar,拥有与QQ或者新浪微博那样好看的界面呢?
如上图中,我们的目标是自定义tabbar做成图中下方的样子,这样点击下方,以快速切换界面。
具体代码如下:
在GXViewController的.m文件中
自定义的GXCustomButton按钮.m中的代码如下:
经过以上代码,就完成了快速自定义UITabBarController内的tabbar控件的目标。
如有任何疑问,欢迎各位留言沟通。
如上图中,我们的目标是自定义tabbar做成图中下方的样子,这样点击下方,以快速切换界面。
具体代码如下:
在GXViewController的.m文件中
#import "GXViewController.h" #import "GXCustomButton.h" @interface GXViewController (){ UIImageView *_tabBarView; //自定义的覆盖原先的tarbar的控件 GXCustomButton *_previousBtn; //记录前一次选中的按钮 } @end @implementation GXViewController - (void)viewDidLoad{ [super viewDidLoad]; self.tabBar.hidden = YES; //隐藏原先的tabBar CGFloat tabBarViewY = self.view.frame.size.height - 49; _tabBarView = [[UIImageView alloc] initWithFrame:CGRectMake(0, tabBarViewY, 320, 49)]; _tabBarView.userInteractionEnabled = YES; //这一步一定要设置为YES,否则不能和用户交互 _tabBarView.image = [UIImage imageNamed:@"背景图片"]; [self.view addSubview:_tabBarView]; // 下面的方法是调用自定义的生成按钮的方法 [self creatButtonWithNormalName:@"图片1"andSelectName:@"图片2"andTitle:@"消息"andIndex:0]; [self creatButtonWithNormalName:@"图片3"andSelectName:@"图片4"andTitle:@"联系人"andIndex:1]; [self creatButtonWithNormalName:@"图片5"andSelectName:@"图片6"andTitle:@"动态"andIndex:2]; [self creatButtonWithNormalName:@"图片7"andSelectName:@"图片8"andTitle:@"设置"andIndex:3]; GXCustomButton *btn = _tabBarView.subviews[0]; [self changeViewController:btn]; //自定义的控件中的按钮被点击了调用的方法,默认进入界面就选中第一个按钮 } #pragma mark 创建一个按钮 - (void)creatButtonWithNormalName:(NSString *)normal andSelectName:(NSString *)selected andTitle:(NSString *)title andIndex:(int)index{ /* GXCustomButton是自定义的一个继承自UIButton的类,自定义该类的目的是因为系统自带的Button可以设置image和title属性,但是默认的image是在title的左边,若想想上面图片中那样,将image放在title的上面,就需要自定义Button,设置一些东西。(具体GXCustomButton设置了什么,放在下面讲) */ GXCustomButton *button = [GXCustomButton buttonWithType:UIButtonTypeCustom]; button.tag = index; CGFloat buttonW = _tabBarView.frame.size.width / 4; CGFloat buttonH = _tabBarView.frame.size.height; button.frame = CGRectMake(80 *index, 0, buttonW, buttonH); [button setImage:[UIImage imageNamed:normal] forState:UIControlStateNormal]; [button setImage:[UIImage imageNamed:selected] forState:UIControlStateDisabled]; [button setTitle:title forState:UIControlStateNormal]; [button addTarget:self action:@selector(changeViewController:) forControlEvents:UIControlEventTouchDown]; button.imageView.contentMode = UIViewContentModeCenter; // 让图片在按钮内居中 button.titleLabel.textAlignment = NSTextAlignmentCenter; // 让标题在按钮内居中 button.font = [UIFont systemFontOfSize:12]; // 设置标题的字体大小 [_tabBarView addSubview:button]; } #pragma mark 按钮被点击时调用 - (void)changeViewController:(GXCustomButton *)sender{ self.selectedIndex = sender.tag; //切换不同控制器的界面 sender.enabled = NO; if (_previousBtn != sender) { _previousBtn.enabled = YES; } _previousBtn = sender; } @end
自定义的GXCustomButton按钮.m中的代码如下:
#import "GXCustomButton.h" @implementation GXCustomButton #pragma mark 设置Button内部的image的范围 - (CGRect)imageRectForContentRect:(CGRect)contentRect{ CGFloat imageW = contentRect.size.width; CGFloat imageH = contentRect.size.height * 0.6; return CGRectMake(0, 0, imageW, imageH); } #pragma mark 设置Button内部的title的范围 - (CGRect)titleRectForContentRect:(CGRect)contentRect{ CGFloat titleY = contentRect.size.height *0.6; CGFloat titleW = contentRect.size.width; CGFloat titleH = contentRect.size.height - titleY; return CGRectMake(0, titleY, titleW, titleH); } @end
经过以上代码,就完成了快速自定义UITabBarController内的tabbar控件的目标。
如有任何疑问,欢迎各位留言沟通。
发表评论
-
带你深入理解 FLUTTER 中的字体“冷”知识
2020-08-10 23:40 626本篇将带你深入理解 Flutter 开发过程中关于字体和文 ... -
Flutter -自定义日历组件
2020-03-01 17:56 1099颜色文件和屏幕适配的文件 可以自己给定 import ... -
Dart高级(一)——泛型与Json To Bean
2020-02-23 19:13 991从 Flutter 发布到现在, 越来越多人开始尝试使用 Da ... -
flutter loading、Progress进度条
2020-02-21 17:03 1166Flutter Progress 1 条形无固定值进度条 ... -
Flutter使用Https加载图片
2020-02-21 01:39 1003Flutter使用Https加载图片 使用http加载图片出 ... -
flutter shared_preferences 异步变同步
2020-02-21 00:55 838前言 引用 在开发原生iOS或Native应用时,一般有判断上 ... -
Flutter TextField边框颜色
2020-02-19 21:31 924监听要销毁 myController.dispose(); T ... -
flutter Future的正确用法
2020-02-18 21:55 799在flutter中经常会用到异步任务,dart中异步任务异步处 ... -
记一次Flutter简单粗暴处理HTTPS证书检验方法
2020-02-18 14:13 948最近在做Flutter项目到了遇到一个无解的事情,当使用Ima ... -
flutter 获取屏幕宽度高度 通知栏高度等屏幕信息
2019-07-27 08:39 1327##MediaQuery MediaQuery.of(con ... -
Mac上制作Centos7系统U盘安装盘
2019-07-23 11:25 639Centos7 下载地址: https://www.cento ... -
关于flutter RefreshIndicator扩展listview下拉刷新的问题
2019-07-10 19:40 1112当条目过少时listview某些嵌套情况下可能不会滚动(条目 ... -
flutter listview 改变状态的时候一直无限添加
2019-07-10 16:01 774setstate的时候会一直无限的调用listview.bui ... -
Flutter Android端启动白屏问题的解决
2019-07-09 00:51 1506问题描述 Flutter 应用在 Android 端上启动时 ... -
Flutter中SnackBar使用
2019-07-08 23:43 766底部弹出,然后在指定时间后消失。 注意: build(Bui ... -
Flutter 之点击空白区域收起键盘
2019-07-08 18:43 1781点击空白处取消TextField焦点这个需求是非常简单的,在学 ... -
Flutter 弹窗 Dialog ,AlertDialog,IOS风格
2019-07-08 18:04 1369import 'package:flutter/mate ... -
flutter ---TextField 之 输入类型、长度限制
2019-07-08 14:30 2313TextField想要实现输入类型、长度限制需要先引入impo ... -
【flutter 溢出BUG】键盘上显示bottom overflowed by 104 PIXELS
2019-07-08 11:13 1542一开始直接使用Scaffold布局,body:new Colu ... -
解决Flutter项目卡在Initializing gradle...界面的问题
2019-07-07 12:53 864Flutter最近很火,我抽出了一点时间对Flutter进行了 ...
相关推荐
- iOS的系统TabBar是矩形的,但通过自定义`UITabBarController`或创建一个自定义`UIView`,我们可以实现弧形的TabBar设计。这通常涉及到重写`layoutSubviews`方法,计算每个item的中心点,并根据弧度调整它们的位置...
在iOS开发中,自定义TabBar是一个常见的需求,特别是在追求个性化和用户体验提升的应用中。"ios-IrregularTabBar自定义tabBar.zip"这个压缩包提供了一个解决方案,它旨在创建一个具有独特交互效果的TabBar,能够对...
1. **UITabBarController**:这是iOS SDK提供的一种默认的TabBar实现,但它的样式和功能可能无法满足所有设计需求。自定义TabBar通常需要对这个类进行扩展或替换。 2. **UIAppearance**:这是苹果提供的一个协议,...
总的来说,自定义TabBar的主框架涉及的知识点包括:iOS UI设计,自定义控件,事件处理,布局管理,动画设计,以及用户交互设计等。开发者需要具备扎实的Swift或Objective-C编程基础,熟悉UIKit框架,并了解Apple的人...
在iOS应用开发中,自定义TabBar是一种常见的需求,它能提供更加个性化和与品牌相符的用户体验。本项目“ios-模仿简书自定义TabBar(纯代码)”旨在实现一个与简书APP类似的TabBar组件,允许开发者方便地集成到自己的...
在iOS应用开发中,自定义TabBar是一种常见的需求,它能提供更为个性化和灵活的用户界面。本项目“ios-自定义tabBar.zip”显然旨在教你如何创建一个可以上下联动的导航栏,这种功能常见于许多App中,用于增强用户体验...
在这个项目中,开发者创建了一个自定义的TabBar控件,并实现了UITableViewCell的高度自适应。下面将详细介绍这两个关键点。 **自定义TabBar** 在iOS开发中,TabBar是应用底部的标准导航元素,通常由...
在iOS开发中,自定义TabBar是一个常见的需求,它允许开发者根据应用的特性和设计风格创建独特的用户界面。本教程将深入讲解如何通过纯代码方式实现一个可自定义的TabBar,让你能够自由地调整其属性,以满足个性化的...
在iOS应用开发中,自定义TabBar是一种常见的需求,它能提供更加个性化和独特的用户体验。本文将深入探讨如何实现一个自定义的TabBar,并结合首页TableView实现类似QQ侧滑菜单的效果。这一技术栈主要涉及iOS UI设计、...
如果你需要更复杂的自定义,比如添加额外的UI元素或动画效果,可以创建一个自定义的`UITabBarController`子类,并重写`layoutSubviews`方法来绘制自定义的TabBar。 1. Objective-C: ```objc - (void)...
本篇文章将详细讲解一个自适应且可定制的iOS TabBar控件,它能够帮助开发者创建出更加符合用户需求和设计风格的TabBar。 标题中的“IOS自适应的可定制的TabBar 控件”指的是一个专门针对iOS平台的TabBar实现,该...
在iOS应用开发中,UI设计和用户体验是至关重要的部分,其中TabBar作为导航控制器的常见组件,用于在多个视图间切换。自定义TabBar可以让开发者根据应用需求创建独特且吸引人的界面。本文将深入探讨如何使用Swift语言...
在iOS应用开发中,TabBarController是用户界面设计中常见的组件之一,它允许用户通过底部的...通过这个"ios-一句代码调用,自定义tabbar.zip"资源,开发者可以快速实现美观且独特的TabBar,提升应用的整体用户体验。
在iOS开发中,"不规则tabBar"通常指的是与苹果默认设计不同的自定义TabBar控件。TabBar是iOS应用中常见的导航元素,用于在多个视图之间切换,但有时开发者为了实现独特的用户界面或者品牌风格,会创建具有独特设计的...
在Swift开发中,UI设计是至关重要的部分,而TabBar作为iOS应用中常见的导航组件,它的自定义风格能显著提升用户体验。本知识点主要探讨如何使用`LCTabBar`实现一个自定义的TabBar,其特色在于中间按钮可以凸起,并且...
- `UIAppearance`协议允许我们在整个应用程序范围内统一设置控件的外观,包括TabBar和TabBarItem。 - 通过`[[UITabBar appearance] setTintColor:]`等方法,可以在不改变TabBar代码结构的情况下实现全局的风格调整...
总之,这个项目涉及到了iOS应用开发中的多种技术,包括自定义控件、动画、状态管理、网络数据同步以及用户界面设计。通过这样的实践,开发者可以深入理解 iOS UI 设计和交互逻辑,提升自己的开发技能。
自定义TabBar可以通过继承`UITabBarController`或创建自定义控件实现,涉及到的关键技术包括`UITabBarItem`的定制、自定义图片和文字、以及响应用户点击事件。 3. 自定义NavigationController: 自定义...
在iOS的UIKit框架中,`UITabBarController`提供了默认的TabBar实现,但有时为了满足特定的设计需求或增加独特的交互效果,我们需要对其进行自定义。这通常涉及到以下几个步骤: 1. **创建自定义TabBarItem**: ...
在iOS应用开发中,我们经常需要使用到`UITabBarController`来实现底部导航栏的功能,类似于安卓版微信的TabBar。然而,原生的`UITabBarController`并未提供滑动切换子控制器的功能,而是通过点击TabBar上的按钮来...