前不久即刻更新到了2.0,整体 UI 虽然朴实了不少,但也不乏一些精致的效果,比如收藏按钮,效果如下,代码已上传github

实现这个效果需要三个元素

最下层利用 maskLayer 创造一个爱心形状的 View

中间层添加一个镂空的 ImageView 用于显示爱心边框

最上层需要一个用于显示填充动画的View

maskLayer 这里就不过多介绍了,如果用代码创建一个爱心形状的 maskLayer 也未免太麻烦,

虽然有paintcode这样的工具存在,所以直接用图片创建 maskLayer 是最佳方案:

- (void)setMaskImage:(UIImage *)maskImage{

_maskImage = maskImage;

if (!_maskLayer) {

self.maskLayer = [CALayer layer];

self.maskLayer.frame = CGRectMake(0,0, _maskImage.size.width, _maskImage.size.height);

self.layer.mask = _maskLayer;// 必须设置frame

}

self.maskLayer.contents = (id)[_maskImage CGImage];

}

这里也验证下即刻是用图片创建 maskLayer 的事实,从 ipa 包中提取 Assets.car 文件,实际上这个文件就是Images.xcassets,

但是 Mac 上不能直接打开,所以就需要用到ThemeEngine工具,浏览里面的内容就可以找到:

很显然第一张图片就是用于创建 maskLayer,另一张就是用于第二个元素的创建,只需要简单的添加一个 Iamgeview

- (void)setBorderImage:(UIImage *)borderImage{

_borderImage = borderImage;

if (!_borderImageView) {

self.borderImageView = [[UIImageView alloc] init];

self.borderImageView.frame = CGRectMake(0,0, _borderImage.size.width, _borderImage.size.height);

[self addSubview:_borderImageView];

}

self.borderImageView.image = _borderImage;

[self sendSubviewToBack:_borderImageView];

}

最后,利用 setFillColor 方法创建 fillView,设置 transform 来配合之后的动画

- (void)setFillColor:(UIColor *)fillColor{

_fillColor = fillColor;

if (!_fillView) {

self.fillView = [[UIView alloc] initWithFrame:self.bounds];

self.fillView.layer.cornerRadius = self.bounds.size.width * 0.5f;

self.fillView.transform = CGAffineTransformMakeScale(0, 0);

[self addSubview:_fillView];

}

self.fillView.backgroundColor = _fillColor;

}

ios开发收藏按钮_即刻APP收藏按钮的实现相关推荐

  1. 基于XCode IOS开发系统实现的新闻APP设计

    一.项目概述 1.1 项目介绍 本次课程设计所实现的新闻阅读APP是基于XCode IOS开发系统上开发的一款可以查看,收藏以及删除新闻的一款IOS应用软件.它有着启动界面.登录界面,在输入正确的账号 ...

  2. ios开发 mvp实践_实践中开发人员的工作流程-我们如何在30天内建立​​MVP

    ios开发 mvp实践 by Léna Faure 莱娜·福雷(LénaFaure) 实践中开发人员的工作流程-我们如何在30天内建立​​MVP (The developer's workflow i ...

  3. 原生开发什么意思_成都APP开发:原生APP开发与Web APP开发有什么区别呢?

    智能手机上的APP应用软件对于人们来说已经成为日常工作生活当中必不可少的工具,无论是工作生活中的聊天交流,购物,饮食,出行,娱乐都会有相应的APP软件.目前常见的APP软件开发模式有两种,一种是原生A ...

  4. IOS开发高手课第二篇 App 启动速度怎么做优化与监控?

    02 | App 启动速度怎么做优化与监控? 我已经在专栏的第一篇文章中,和你梳理了一份 iOS 开发的知识体系框架图.今天,我们就正式从基础出发,开始自己的 iOS 开发知识体系构建之路吧.接下来, ...

  5. 即刻APP收藏按钮的实现

    前不久即刻更新到了2.0,整体 UI 虽然朴实了不少,但也不乏一些精致的效果,比如收藏按钮,效果如下,代码已上传github 实现这个效果需要三个元素 最下层利用 maskLayer 创造一个爱心形状 ...

  6. jquery实现app开发闹钟功能_商城app开发价格及功能列表

    商城app开发需要多少钱?如何快速开发商城的app呢?现在随着移动互联网开发技术的进步,不需要找专业的app开发公司,不需要等专业开发技术,使用应用公园app在线制作平台,自己能快速制作商城app的. ...

  7. iOS开发调试技巧之在App设置中切换服务器环境

    在日常的App开发中,会有正式服务器与测试服务器两种不同的环境,调试或测试时经常需要在不同的环境中切换. 在使用Xcode调试时,可能需要运行两次以测试不同的服务器环境,而在打包测试时,则需要导出两个 ...

  8. ios开发闹钟源代码_开源源码让短视频的开发变得更加便捷

    对外开放源码(开源系统源代码)指的是该源代码的软件著作使用者将其所拥有的初始码公布,容许大家应用.改动发售的手机软件或设计方案体. 刚开始朋友会感觉"开源系统源代码"这一专有名词与 ...

  9. iOS开发基础:最新的APP打包上架流程

    之前有人留言让我更新部分文章,下面就为大家分享一下iOS的APP打包上架流程: 上传至apple developer 1.1 上传准备工作 更新上架和发布上架不同,在原始版本首次上架的时候就将描述文件 ...

  10. ios开发 静音键设置_苹果手机静音键怎么设置

    大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. 苹果手机机身左侧的上方有静音键按钮,向下拨动即可静音,此外用户可以进入手机的"系统设置"中设置静音模式. iP ...

最新文章

  1. pytorch lstm crf 代码理解
  2. UVA1103分区涂色+vc使用注意事项
  3. python concat函数 多张表_教你用python递归函数求n的阶乘,优缺点及递归次数设置方式
  4. 中文分词词性对照表(转)
  5. P2597 [ZJOI2012]灾难(倍增LCA+拓扑排序)
  6. 系出名门Android(7) - 控件(View)之ZoomControls, Include, VideoView, WebView, RatingBar, Tab
  7. Google Guava BiMaps
  8. 订单拣选作业模式总结
  9. [转载]windows2003上IIS+PyISAPIe1.1..0部署成功
  10. 快速排序-超级详细代码注释!
  11. KCP - A Fast and Reliable ARQ Protocol
  12. android多个单选按钮互斥使用,在GUI设计中,单选按钮用来实现用户在多个选项中的互斥选择,在同一组内多个选项中只能选择一个,当...
  13. Mac下安装第三方模块报错:‘sqlfront.h‘ file not found的解决办法
  14. 基于javaweb的晚会抽奖系统(java+jdbc+servlet+ajax+mysql)
  15. 零基础H5小游戏傻瓜教程_教您如何制作微信小游戏
  16. 『解疑』vue修改html图标,tilte左边的图标(以图片格式作为图标)
  17. Arc consistency in CSPs
  18. JavaEE:HTML
  19. 三线一单”大气环境质量底线体系与划分技术方法
  20. php实现支付宝扫码付

热门文章

  1. aix系统查看服务器型号齐全,查看AIX系统位数
  2. 步进驱动器简单接线说明书
  3. 传智播客java测试题_传智播客java测试题
  4. 话单分析账单分析行踪分析三合一数据分析
  5. mysql用户画像表设计_用户画像:计算用户偏好标签及数据指标与表结构设计
  6. java导入shp数据并解析
  7. 基于wke封装的duilib的webkit浏览器控件,可以c++与js互交,源码及demo下载地址
  8. 挑战程序设计竞赛:Conscription
  9. 数据产品-产品经理必备的七大文档
  10. win10一直正在检查更新_Win10关闭自动更新的方法汇总