2015
7.2
一天一工程总结系列
对各类优秀工程的剖析和拙见。有些胡言乱语还请作者谅解。

VBFPopFlatButton
1.执行多次的单例
#define AGEColorImplement(COLOR_NAME,RED,GREEN,BLUE)    \
+ (UIColor *)COLOR_NAME{    \
    static UIColor* COLOR_NAME##_color;    \
    static dispatch_once_t COLOR_NAME##_onceToken;   \
    dispatch_once(&COLOR_NAME##_onceToken, ^{    \
        COLOR_NAME##_color = [UIColor colorWithRed:RED green:GREEN blue:BLUE alpha:1.0];  \
        NSLog(@"1");\
    }); \
    return COLOR_NAME##_color;  \
}\

有个牛人对dispatch_once的代码级解析:http://blog.csdn.net/uxyheaven/article/details/24735237

这样的写法来自http://blog.alexedge.co.uk/speeding-up-uicolor-categories/

2.VBFPopFlatButton

继承自UIButton。

VBFPopFlatButton有一个NSInteger类型的枚举FlatButtonType,对应Demo里的各种按钮样式。

另外含有三个VBFDoubleSegment的实例变量,firstSegment,secondSegment,thirdSegment.

关键函数

-(void)animateToTyle:(FlatButtonType)finalTyle

{

[self.xxSegment moveToState:xxxx animated:self.animateToStartPosition];

    [self addSpringRotationToLayer:self.topLine toValue:toValueTop];

POPSpringAnimation anim.toValue = @(toValue);

    self.xxLine.transform = CATransform3DMakeRotation(toValueTop,,,);

[self.xxSegment movePositionToPoint:xxxOriginPoint animated:self.animateToStartPosition];

[self addSpringTranslationToLayer:self.topLine toValue:toPoint];

POPSpringAnimation anim.toValue = @(toValue);

self.xxLine.position = finalPosition

}

3.@interface VBFDoubleSegment:CALayer

有一个NSInteger类型的DoubleSegmentState枚举,每一个枚举对应一个按钮样式。

包含两个成员,topLine/bottomLine,两者均是CAShapeLayer的实例变量。这两个layer,用addsubLayer的方式加在VBFDoubleSegment上。

4.动画效果,由第三方类pop实现。

转载于:https://www.cnblogs.com/so-magic/p/4616674.html

一天一工程总结系列-7.2相关推荐

  1. 中国科学院计算机专业职称,2018年春季工程技术系列专业技术资格职称评审结束...

    2018年春季工程技术系列专业技术资格职称评审结束 2018-06-01院人才交流中心 [字体:大 中 小] 语音播报 中国科学院工程技术系列专业技术资格春季评审会于5月26日至27日召开.共有161 ...

  2. 携程无线工程技术系列——从零打造携程无线持续交付平台 MCD 实践

    作者简介:携程无线基础工程团队高级经理,负责无线交付平台和基础服务研发.十多年的互联网从业经验,曾供职于 eBay 等互联网公司,研发经验丰富. 导语:携程 App 几乎承载着整个集团的所有业务形态, ...

  3. 水利类专业怎么应用计算机,水利水电工程专业系列教材·计算机应用技术

    水利水电工程专业系列教材·计算机应用技术 语音 编辑 锁定 讨论 上传视频 <水利水电工程专业系列教材·计算机应用技术>是2003年中央广播电视大学出版社出版的图书,作者是陆桂明.[3] ...

  4. 模块化工程构建系列(一)

    本系列主要解决的问题:针对一个功能庞大的企业应用 + 应用面对不同区域的众多客户,如何做好应用的多版本管理.各区域线上模块的快速更新及系统的稳定性保障,可以采取对应用进行核心模块按模块化方式进行管理. ...

  5. flutter release 版本 调试_腾讯课堂Flutter工程实践系列——接入篇

    前言 课堂目前的技术栈是React Native + Hybird + Native,随着技术的演进多端融合的趋势越来越明显,而RN的弊端也突显出来,jsBridge性能不是最优,占用前端人力,定位问 ...

  6. MIPI摄像头工程=7系列FPGA + OV5640(MIPI) + 15 分钟 + VITIS

    项目使用东西 硬件 Spartan-7 SP701 FPGA 7系列FPGA+电阻网络实现的MIPI接口 OV5640 MIPI接口 软件 AMD Vivado 2020 版本以上 AMD Vitis ...

  7. mysql中的正向工程_Hibernate系列之正向工程

    作用:可以依据hibernate正向工程生成库表结构 spring-hibernate.xml文件中 1 2 3 4 5 6 ${hibernate.hbm2ddl.auto} 7 ${hiberna ...

  8. react手机机端css_react工程搭建系列之---移动端适配与antd-mobile高清适配方案

    一.逻辑像素(css像素)与物理像素(设备像素) 机型 逻辑像素 物理像素 Scale Factor iphone 3GS 320 x 480 320 x 480 1x iphone 4 320 x ...

  9. java模型给泛型_【一天一个基础系列】- java之泛型篇

    java 5以后,java引入了"参数化类型"的概念,允许程序在创建集合时指定集合元素的类型 java 7之前,如果使用带泛型的接口.类定义变量,那么调用构造器创建对象时构造器的后 ...

  10. [特征工程系列一] 论特征的重要性

    满打满算,还有十天左右就要过年了,这些天大家或多或少都有点浮躁.反过来想,趁大家都懈怠的时候,正是学习的最佳时机.趁着这几天,也给自己加点码,去认真的再看一下特征工程.我给自己列了下面的这一份学习清单 ...

最新文章

  1. SAP PM 模块主要配置点
  2. docker 自定义网桥
  3. 文巾解题 13. 罗马数字转整数
  4. 实战SSM_O2O商铺_34【商品】商品编辑之Controller层的实现
  5. iOS 模糊化效果 ANBlurredImageView的使用
  6. 智能、弹性、易用:云时代的负载均衡之道
  7. epoll与fork
  8. IOCP编程小结(中)
  9. C程序设计(第四版)谭浩强著-学习笔记
  10. 《Photoshop Lightroom4 经典教程》目录—导读
  11. 把ts自动合并 下载网页视频并自动合成视频
  12. Zemax操作--9(全局坐标设定及使用方法)
  13. 科学计算机怎样开根号,电脑上的科学计算器怎么开根号(科学计算器开4次方根操作方法)...
  14. 解决Windows10 14393版本迅雷崩溃问题
  15. 中国山梨酸市场运营动态分析与前景方向预测报告2022-2028年
  16. python mysqldb insert_Python MySQLdb 插入数据
  17. 生活就像一盒巧克力,你永远不知道会尝到哪种滋味
  18. 用友远程命令执行漏洞并提权
  19. 从零开始的unity2017笔记【2D】(【二】角色动画)
  20. Dubbo跟Spring Cloud哪个更好用?“微服务”第二代又赢了!

热门文章

  1. vector获取缓冲区指针
  2. Daily Scrum8, Oct. 12th
  3. Java Bean 与Spring Bean 的区别
  4. Redis windows端连接虚拟机内Redis各种问题
  5. 分区工具parted的详解及常用分区使用方法
  6. 一款PO VO DTO 转换神器,求求你别在到处找工具类了!
  7. 我是如何把SpringBoot项目的并发提升十倍量级的
  8. 程序员该如何选择工作以及如何做好职业规划?
  9. 人生真正拉开距离不是高考!是大学毕业后第一个十年
  10. 全网AI和机器学习资源大合集(研究机构、视频、博客、书籍...)