文档章节

iOS TabBar 自定义

别情花如依丶
 别情花如依丶
发布于 2017/05/05 17:50
字数 221
阅读 24
收藏 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
react native 类库(一)

计时器类库 https://github.com/react-native-component/react-native-smart-timer-enhance TabBar底部导航(兼容Android和IOS)--react-native-tab-navigator 下载依赖: npm install react-n......

Chason-洪
2017/09/19
0
0
React Navigation

https://reactnavigation.org/docs/intro/nesting 官网 http://blog.csdn.net/u013718120/article/details/72357698 http://www.jianshu.com/p/2f575cc35780 这里只是基本用法,高级详情用法......

Chason-洪
2017/11/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

白话SpringCloud | 第五章:服务容错保护(Hystrix)

前言 前一章节,我们知道了如何利用RestTemplate+Ribbon和Feign的方式进行服务的调用。在微服务架构中,一个服务可能会调用很多的其他微服务应用,虽然做了多集群部署,但可能还会存在诸如网...

oKong
7分钟前
0
0
【解惑】领略Java内部类的“内部”

内部类有两种情况: (1) 在类中定义一个类(私有内部类,静态内部类) (2) 在方法中定义一个类(局部内部类,匿名内部类) 1、私有内部类 —— 在方法之间定义的内部类,非静态 我们首先看看类中...

偶尔诗文
49分钟前
1
0
sqlserver 2008 r2 直接下载地址(百度云)

之前下载的sqlserver2008发现不能附加,就卸载了,重新找到了sqlserver2008R2的百度云资源 卸载sqlserver2008还是有点麻烦,不过就是需要删除注册表中的信息 自己来回卸载了3次终于重装sqlse...

dillonxiao
今天
1
0
[Java]JVM调优总结 -Xms -Xmx -Xmn -Xss

JVM调优总结 -Xms -Xmx -Xmn -Xss 博客分类: Java General JVM应用服务器电信CMS算法 堆大小设置 JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可...

morpheusWB
今天
2
0
C++ std::function 和 std::bind

C++11提供了std::function和std::bind两个工具,用于引用可调用对象。这些可调用对象包括 普通函数,Lambda表达式,类的静态成员函数,非静态成员函数以及仿函数等。引用可调用对象,可以用于...

yepanl
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部