IOS开发UI篇--使用CAShapeLayer实现一个音量大小动态改变的控件
来源:互联网 发布:网络操作系统课件 编辑:程序博客网 时间:2024/05/21 10:33
一、案例演示
对于实时显示语音音量大小的需求,发现很多人的实现方式通过预放置多张图进行切换进行完成的。这样的处理,不但会浪费App的资源存储空间,而且效率也不高。对于符合某一定规律动态改变的图形,我们也可以考虑通过代码的方式来实现。
二、实现机制
外部轮廓View主要控制显示大小和显示的圆角效果。内部的Layer主要控制动态显示的高度,虽然他是矩形的。但是当把该Layer加入到View中,而该View设置了
_dynamicView.clipsToBounds = YES;
。内部的Layer超过外部轮廓的部分,则会被切除掉。
如此说来,我们只需要动态改变内部Layer显示的高度,即可完成该效果显示。是不是很简单啊。。
三、实现代码
_dynamicView 表示外部轮廓的View。
_indicateLayer 表示内容动态显示的Layer。
实现动态改变的函数如下:
-(void)refreshUIWithVoicePower : (NSInteger)voicePower{ CGFloat height = (voicePower)*(CGRectGetHeight(_dynamicView.frame)/TOTAL_NUM); [_indicateLayer removeFromSuperlayer]; _indicateLayer = nil; UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, CGRectGetHeight(_dynamicView.frame)-height, CGRectGetWidth(_dynamicView.frame), height) cornerRadius:0]; _indicateLayer = [CAShapeLayer layer]; _indicateLayer.path = path.CGPath; _indicateLayer.fillColor = [UIColor whiteColor].CGColor; [_dynamicView.layer addSublayer:_indicateLayer];}
四、联系方式
微博:新浪微博
博客:http://blog.csdn.net/yixiangboy
github:https://github.com/yixiangboy
3 0
- IOS开发UI篇--使用CAShapeLayer实现一个音量大小动态改变的控件
- IOS开发UI篇--使用CAShapeLayer实现复杂的View的遮罩效果
- IOS开发UI篇--使用CAShapeLayer实现复杂的View的遮罩效果
- 使用JavaScript实现动态改变控件大小
- Android 自定义SeekBar动态改变 硬件音量大小 实现和音量键的同步
- iOS开发-UI控件:动态改变UITableView中的Cell高度
- iOS开发UI篇—使用picker View控件完成一个简单的选餐应用
- iOS开发UI篇—使用picker View控件完成一个简单的选餐应用
- 动态改变控件大小
- 动态改变控件大小
- 动态改变控件大小
- 动态改变控件大小
- c# 动态改变控件大小的方法
- 动态改变对话框中控件的大小
- Android 动态改变控件的大小
- android 动态改变控件大小的方法
- android 动态改变布局控件 的大小
- IOS开发UI篇--使用UICollectionView实现一个无限轮播的案例
- C语言 预处理指令 1宏定义
- 在特定目录下查找特定字符串
- C语言 预处理指令 2条件编译
- OC 文件与文件夹操作
- 推荐一个网站,全自动在线做GIF进度条
- IOS开发UI篇--使用CAShapeLayer实现一个音量大小动态改变的控件
- Nginx配置文件详细说明
- 杭电1220 Cube
- 用Storage Foundation管好存储系统-入门
- C语言 预处理指令 3文件包含
- 【Leetcode】之Count and Say
- React 复用组件 含表单radio/checkbox注意的问题
- python入门笔记(Day6)--面向对象,实例,封装,继承多态,dir()
- 选择ASM时,存储划分的一点考虑