文档章节

iOS TabBar 自定义

别情花如依丶
 别情花如依丶
发布于 2017/05/05 17:50
字数 221
阅读 24
收藏 0
点赞 0
评论 0

如图,项目需求:

项目需求图

完成该 tabBar 需要对 TabBar 进行自定义.多数都会采用自定义 UITabBar 通过重写 layoutSubviews 方法实现,这种方法比较麻烦,对中间按钮点击事件特殊处理.

简单方式可以通过设置 UITabBarItem 的 Image 偏移量来实现这种效果:tabBarItem.imageInsets = UIEdgeInsetsMake(-15, 0, 15, 0);

如果中间按钮点击不需要跳转页面,则可通过代理方法:tabBarController:shouldSelectViewController:实现

线条采用 UIBezierPath 绘制,代码如下:

    UIBezierPath *path = [UIBezierPath bezierPath];
    [path moveToPoint:CGPointMake(0, width / 2 * (1 - sin(M_PI / 12)))];
    [path addLineToPoint:CGPointMake((KScreenWidth -width ) / 2, width / 2 * (1 - sin(M_PI / 12)))];
    [path addArcWithCenter:CGPointMake(KScreenWidth / 2, width / 2 ) radius:width / 2 / cos(M_PI / 12) startAngle:(M_PI + M_PI / 12) endAngle:M_PI * 2 - M_PI / 12  clockwise:YES];
    [path addLineToPoint:CGPointMake(KScreenWidth, width / 2 * (1 - sin(M_PI / 12)))];
    CAShapeLayer *shapLayer = [CAShapeLayer layer];
    shapLayer.frame = CGRectMake(0, - width / 2 + 2, KScreenWidth, width / 2);
    shapLayer.strokeColor = kCOLORWITH_RGB(165, 165, 165).CGColor;
    shapLayer.lineWidth = 2;
    shapLayer.fillColor = [UIColor clearColor].CGColor;
    shapLayer.path = path.CGPath;
    [self.tabBar.layer addSublayer:shapLayer];

 

© 著作权归作者所有

共有 人打赏支持
别情花如依丶

别情花如依丶

粉丝 4
博文 78
码字总数 20405
作品 6
程序员
IOS开发—无需自定义,修改tabbar背景颜色

最近修改的项目都是基于IOS 5.0或以上的版本的,在IOS 6一下的版本中,系统默认的tabbar是黑色的,但是此项目需要改成兼容IOS 7和IOS 8的,大家都知道IOS 7开始,IOS的 UI 进入了扁平的时代,...

TomatosX
2015/03/18
0
1
完美结局iPhoneX自定义tabBar重影问题

对于iOS开发者来说,底部的tabBar通常都是需要自定义,因为系统自带的或多或少和我们要求的总有一点的出入。 在自定义tabBar后,通常做法就是移除系统的tabBar来防止出现重影的问题。 在iPh...

会飞的海豚哦
05/24
0
0
fir.im Weekly - iOS 开发中的 Git 流程

本期 fir.im Weekly 收集了微博上的热转资源,包含 Android、iOS 开发工具、源码等好用的轮子,还有一些 APP 设计的 Tips,希望对你有用。 精仿知乎日报 iOS 端 @我偏笑_NSNirvana花了将近一...

风起云飞fir_im
2015/11/03
0
0
iOS高仿微信、仪表盘、图片标注图片滤镜、高斯模糊、上拉加载、下拉刷新等源码

iOS精选源码 Swift-图片画框标注(http://www.code4app.com/thread-29884-1-1.html) Swift版的上拉加载, 下拉刷新控件(一句话集成, 超级易用)(http://www.code4app.com/thread-29885-1-1.html...

sunnyaigd
05/22
0
0
iOS天气动画、高仿QQ菜单、放京东APP、高仿微信、推送消息等源码

iOS精选源码 TYCyclePagerView iOS上的一个无限循环轮播图组件(http://www.code4app.com/thread-14507-1-1.html) iOS高仿微信完整项目源码(http://www.code4app.com/thread-14695-1-1.html)......

sunnyaigd
06/12
0
0
谈谈iOS 5和Storyboard的应用本地化

在使用Nib和Xib文件,也就是Interface Builder的iOS 4.x SDK中我们通过NSLocalizedString和Nib文件来本地化字符串。其中还涉及字符串文件的编写,十分麻烦。 在iOS 5和Xcode 4.2我们也可以这...

孔俊
2013/06/19
0
4
iOS自定义弹出视图、收音机APP、图片涂鸦、加载刷新、文件缓存等源码

iOS精选源码 一款优秀的 聆听夜空FM 源码(http://www.code4app.com/thread-14546-1-1.html) zhPopupController 简单快捷弹出自定义视图(http://www.code4app.com/thread-14861-1-1.html) WHS......

sunnyaigd
06/04
0
0
iOS高仿QQ录音、智能语音诗歌、高仿微信图片浏览源码

iOS精选源码 好看实用的日期时间选择器--CCTimePicker 高仿QQ录音功能 QQ侧滑抽屉效果 MMActionSheet介绍(自定义的类似于微信的UIActionSheet弹出框组件) 智能语音查询诗歌 仿课程表表格效果...

sunnyaigd
2017/10/25
0
0
iOS跳转界面时隐藏tabBar的方法:hidesBottomBarWhenPushed

iOS隐藏tabBar的方法: 1.设置self.tabBarController.tabBar.hidden=YES; self.tabBarController.tabBar.hidden=YES; 2.如果在push跳转时需要隐藏tabBar,设置self.hidesBottomBarWhenPushed......

SupermanGC
2015/08/11
0
0
iOS 11 安全区域适配总结

导语:本文主要是对iOS 11下APP中内容下移20pt或下移64pt的问题适配的一个总结。内容包括五个部分:问题的原因分析、属性的计算方式、什么情况下的会发生内容下移、有哪些解决方法、解决这个...

Daniel_s
2017/11/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

前端基础

1. get请求传参长度的误区 误区:我们经常说get请求参数的大小存在限制,而post请求的参数大小是无限制的。 实际上HTTP 协议从未规定 GET/POST 的请求长度限制是多少。对get请求参数的限制是...

wenxingjun
今天
0
0
Android 复制和粘贴功能

做了一回搬运工,原文地址:https://blog.csdn.net/kennethyo/article/details/76602765 Android 复制和粘贴功能,需要调用系统服务ClipboardManager来实现。 ClipboardManager mClipboardM...

她叫我小渝
今天
0
0
拦截SQLSERVER的SSL加密通道替换传输过程中的用户名密码实现运维审计(一)

工作准备 •一台SQLSERVER 2005/SQLSERVER 2008服务 •SQLSERVER jdbc驱动程序 •Java开发环境eclipse + jdk1.8 •java反编译工具JD-Core 反编译JDBC分析SQLSERVER客户端与服务器通信原理 SQ...

紅顏為君笑
今天
6
0
jQuery零基础入门——(六)修改DOM结构

《jQuery零基础入门》系列博文是在廖雪峰老师的博文基础上,可能补充了个人的理解和日常遇到的点,用我的理解表述出来,主干出处来自廖雪峰老师的技术分享。 在《零基础入门JavaScript》的时...

JandenMa
今天
0
0
linux mint 1.9 qq 安装

转: https://www.jianshu.com/p/cdc3d03c144d 1. 下载 qq 轻聊版,可在百度搜索后下载 QQ7.9Light.exe 2. 去wine的官网(https://wiki.winehq.org/Ubuntu) 安装 wine . 提醒网页可以切换成中...

Canaan_
今天
0
0
PHP后台运行命令并管理运行程序

php后台运行命令并管理后台运行程序 class ProcessModel{ private $pid; private $command; private $resultToFile = ''; public function __construct($cl=false){......

colin_86
今天
1
0
数据结构与算法4

在此程序中,HighArray类中的find()方法用数据项的值作为参数传递,它的返回值决定是否找到此数据项。 insert()方法向数组下一个空位置放置一个新的数据项。一个名为nElems的字段跟踪记录着...

沉迷于编程的小菜菜
今天
1
1
fiddler安装和基本使用以及代理设置

项目需求 由于开发过程中客户端和服务器数据交互非常频繁,有时候服务端需要知道客户端调用接口传了哪些参数过来,这个时候就需要一个工具可以监听这些接口请求参数,已经接口的响应的数据,这种...

银装素裹
今天
0
0
Python分析《我不是药神》豆瓣评论

读取 Mongo 中的短评数据,进行中文分词 对分词结果取 Top50 生成词云 生成词云效果 看来网上关于 我不是药神 vs 达拉斯 的争论很热啊。关于词频统计就这些,代码中也会完成一些其它的分析任...

猫咪编程
今天
0
0
虚拟机怎么安装vmware tools

https://blog.csdn.net/tjcwt2011/article/details/72638977

AndyZhouX
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部