iOS Tabbar凸起效果
先上效果图:
之前没有研究过凸起这种效果,知道项目用到了 才来仔细研究,之前看似高大上的效果其实实现起来还是挺简单的。
自定义UITabbar:
只要代码都写在了layoutSubviews方法里,为了让拿到系统“UITabBarButton”的frame
- (instancetype)initWithBumpIndex:(NSInteger)index bumpHeight:(CGFloat)bumpHeight didTapBumpBarBlock:(DidTapBumpBarBlock)didTapBumpBarBlock{if (self = [super init]) {_index = index;_bumpHeight = bumpHeight;//凸起的高度_didTapBumpBarBlock = didTapBumpBarBlock;_arrTabBarButton = [NSMutableArray array];}return self;
}
- (void)layoutSubviews{[super layoutSubviews];for (id obj in self.subviews) {if ([obj isKindOfClass:NSClassFromString(@"UITabBarButton")]) {//一个可变数组保存所有的UITabBarButton按钮[_arrTabBarButton addObject:obj];}}/**
循环防止重复创建 也可以把roundView设置成全局的 把初始化方法写在UITabbar 的init方法里就不需要这个循环了
*/for (id obj in self.subviews) {if ([obj isKindOfClass:[UIControl class]]) {UIControl *view = obj;if (view.tag == 123456) {[view removeFromSuperview];}}}//_index是传进来的需要凸起的indexUIButton *button = _arrTabBarButton[_index];UIControl *roundView = [[UIControl alloc]initWithFrame:CGRectMake(button.x, -_bumpHeight, button.width, button.width)];roundView.tag = 123456;roundView.layer.cornerRadius = roundView.height*0.5;roundView.clipsToBounds = YES;roundView.backgroundColor = [UIColor whiteColor];[roundView addTarget:self action:@selector(tapControl:) forControlEvents:UIControlEventTouchUpInside];[self insertSubview:roundView atIndex:0];
}
//凸起部分的点击事件
- (void)tapControl:(UIControl *)control{if (_didTapBumpBarBlock) {_didTapBumpBarBlock();}
}
//由于凸起部分在UITabbar frame外 使用该方法解决不能点击到
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event{//如果不加上这个判断,当push到其他页面点击这个位置也会响应if (!self.hidden) {UIControl *roundView = [self viewWithTag:123456];if (CGRectContainsPoint(roundView.frame, point)) {return roundView;}}return [super hitTest:point withEvent:event];
}
over!
iOS Tabbar凸起效果相关推荐
- iOS TabBar中间凸起实践
先看下效果: 简单的说下大致结构和思路吧 tabbar的话也是遵循主流,自定义一个继承自系统UITabbar的HQTabbar,然后用KVC和系统的进行替换中间的凸起按钮和tabbar内部的子控件不是 ...
- 底部导航栏的凸起效果
微信小程序开发教程.开发教学 本视频为1-1号视频,做出了底部导航栏的凸起效果 第一次做视频,希望大家多多支持- 组件源码+项目源码: 链接:https://pan.baidu.com/s/1EkZx ...
- iOS tabbar 图片,最佳大小方式
iOS tabbar 图片,最佳大小方式 文档大小 30 *30 retaina 60 *60 最佳大小 48 *32 参考:http://stackoverflow.com/questions/15 ...
- ios APP加密探究几维安全iOS 代码混淆效果参考
几维安全ios代码混淆效果参考: 什么是加密 加密是在二进制的程序中植入一段代码,在运行的时候优先取得程序的控制权,做一些额外的工作.大多数病毒就是基于此原理. 加密作用 加壳的程序可以有效阻止对程序 ...
- 防ios的抽屉效果,防qq的抽屉效果
AS中导入GitHub开源项目SlidingMenu总结,我开始AS导入SlidingMenu的时候也百度了很多文章,写的都不是很详细,所以导入成功后,写了这篇文章,希望对想用AndroidStudi ...
- 移动端阻止ios弹性滑动_移动端iOS阻止橡皮筋效果
一.遇到的问题 移动端开发中,iOS的微信浏览器也好.Safari也好在浏览网页的时候会出现橡皮筋效果.就是当页面拉到尽头的时候还能再继续拉动,露出浏览器的底色,松手会回弹回去. 微信浏览器: Saf ...
- Flutter 凸起效果底部导航栏一
大多app中都会带有底部导航栏,系统默认自带的导航条不够新颖.今天我们改造一下导航条,将中间的按钮起到凸起的效果,特别有的app,中间常用扫一扫功能. Flutter为我们提供了一个控件BottomN ...
- 元素凸起效果_被誉为作物“生殖元素”的“硼”到底有多重要?看完你就明白了...
哈喽,大家好!这里是种地人!今天我们聊聊"硼"! "硼元素"可能很多种植户朋友几乎都没有用过!其实作物生长所需要的大中微量元素一共有16种.硼元素作为农作物生长 ...
- iOS 转盘动画效果实现
代码地址如下: http://www.demodashi.com/demo/11598.html 近期公司项目告一段落,闲来无事,看到山东中国移动客户端有个转盘动画挺酷的.于是试着实现一下,看似简单, ...
最新文章
- PLSQ执行同样的sql,使用mybatis进行动态拼装执行的时候非常慢的问题解决
- webpack 项目使用webpack-dev-server 自动编译 (2)
- c语言class运行错误,win32 C RegisterClass失败,该如何处理
- JAVA配置注解方式搭建简单的SpringMVC前后台交互系统
- 【Python】merge:数据规整化:清理、转换、合并、重塑
- HTML5 使用 JS 生成二维码,带头像
- lombok链式调用_使用Lombok翻车了
- Martin Fowler:数字化时代,远程与本地协同工作孰优孰劣?| IDCF
- scrum–yesterday once more
- python播放音乐同步歌词_使用Python下载歌词并嵌入歌曲文件中的实现代码
- 软件设计原则:内聚、耦合有哪几种类型?内聚度、耦合度如何比较?
- DB2数据库备份恢复
- 【docker】安装教程
- 认识大数据分析的四大误区
- MATLAB算法实战应用案例精讲-【智能优化算法】蝙蝠算法-BA(附MATLAB和Python代码)
- 七号信令:信令网基本概念
- android 自定义Preference CheckBoxPreference ListPreference的用法
- TF-IDF算法介绍及实现
- 同比 数据模型 环比_同比和环比计算公式?
- sql中的left join 查询
热门文章
- CFI/CFG 安全防护原理详解
- 台式电脑计算机的内存叫什么,电脑内存和硬盘有什么区别 电脑内存和硬盘区别介绍【详解】...
- 【学习笔记】Mac下用android studio创建安卓模拟器
- 虚幻引擎5 AR开发教程02:构建和测试AR Android App
- 汇编push,pop
- An Unsupervised Representation to Predict the Future of Patients from the Electronic Health Records
- 浮点数c语言,C语言的浮点数应该如何表示详细方法说明
- JAVA:实现求Average平均数算法(附完整源码)
- linux下五颜六色的文件——具体含义
- 俄罗斯方块游戏的设计与实现(Java+Swing+Eclipse)