模仿Yahoo 天气自定义降水量的雨滴效果
来源:互联网 发布:生物信息学 知乎 编辑:程序博客网 时间:2024/06/06 14:01
模仿Yahoo 天气自定义降水量的雨滴效果
1、第一种方法:
当然最简单的,直接使用几张图片,而且这种有不需要太精确,基本上准备11张图片就可以,我破解了Yahoo的天气app,发现里面有这种图片。类似于下面这种,所以我猜测他是使用图片实现的:
2、第二种方法:
使用CALayer的mask属性实现,如果你对mask不了解,可以参考下面的链接去看看:
- http://stackoverflow.com/questions/9595479/adding-a-mask-with-calayers
- http://stackoverflow.com/questions/5757386/how-to-mask-an-uiimageview
- 关于使用CALayer中mask的一些技巧
- http://stackoverflow.com/questions/25738296/particular-shape-image-on-uiimageview
- https://www.raywenderlich.com/2502/calayers-tutorial-for-ios-introduction-to-calayers-tutorial
使用上面三个图片就可以实现我们的效果,如下所示,不要关注背景的红色,那是我调试设置的:
具体实现:
1. 先自定义一个UIPrecipitationRaindropView继承自View
2. 把第一张图片作为一个UIImageView放在底部
3. 把第二张图片也作为一个UIImageView,放在第一个imageView上面
4. 把第三张图,设置为一个CALayer的contents,这里一定要设置CALayer的bounds属性
5. 然后就是根据雨量大小,调整CALayer的位置了。
具体代码如下:
- (void)initializeUI{ self.backgroundColor = [UIColor colorWithWhite:0 alpha:0.5]; //背景,第一张图 UIImageView* raindropImgView = ({ UIImageView* imgView = [[UIImageView alloc]init]; UIImage* img = [UIImage imageNamed:@"raindrop"]; imgView.image = img; [self addSubview:imgView]; [imgView mas_makeConstraints:^(MASConstraintMaker *make) { make.edges.equalTo(self); }]; imgView; }); self.raindropImgView = raindropImgView; //遮罩,第三张图 CALayer* maskLayer = [CALayer layer]; UIImage* mask = [UIImage imageNamed:@"wave2"]; maskLayer.contents = (id)mask.CGImage; maskLayer.bounds = CGRectMake(0, 0, mask.size.width, mask.size.height);// maskLayer.frame = CGRectMake(0, 30, mask.size.width, mask.size.height); maskLayer.anchorPoint = CGPointMake(0.5, 0); self.maskLayer = maskLayer; //雨滴,第二张图 UIImageView* raindropBlueImgView = ({ UIImageView* imgView = [[UIImageView alloc]init]; imgView.image = [UIImage imageNamed:@"raindrop_blue"]; imgView.layer.mask = maskLayer; imgView.layer.masksToBounds = YES;// [imgView.layer addSublayer:maskLayer]; [self addSubview:imgView]; [imgView mas_makeConstraints:^(MASConstraintMaker *make) { make.edges.equalTo(self); }]; imgView; }); maskLayer.position = CGPointMake(raindropBlueImgView.intrinsicContentSize.width*0.5, raindropBlueImgView.intrinsicContentSize.height); [self bringSubviewToFront:raindropImgView]; MASAttachKeys(raindropImgView, raindropBlueImgView);}
0 0
- 模仿Yahoo 天气自定义降水量的雨滴效果
- 自定义控件-雨滴效果
- 雨滴效果
- 雨滴效果
- 雨滴,美丽的雨滴
- 纯JS制作的窗户雨滴效果
- Android自定义view--SurfaceView实现墨迹天气的风车效果
- 一个好的模仿自定义工具栏的效果
- canvas实现雨滴效果
- Android模仿打字机效果的自定义View实现
- Android模仿打字机效果的自定义View实现
- 模仿微博ViewPage指示器滑动效果的自定义View
- 移动开发----Android模仿打字机效果的自定义View实现
- 哇塞!HTML5 实现的雨滴效果 CSS发抖
- HTML5 canvas逼真的雨滴效果js插件
- HTML5 canvas逼真的雨滴效果js插件
- 仿IOS中下拉刷新的“雨滴”效果
- 如何使用CSS3/SCSS实现逼真的车窗雨滴效果
- 最大子序列-N
- Codeforces 46D Parking Lot 枚举
- 【BZOJ1878】【codevs2307】HH的项链,莫队算法
- LinuxMySQL主从配置
- 最大子序列-NlogN
- 模仿Yahoo 天气自定义降水量的雨滴效果
- Android Studio的*.9.png报错问题-Crunching Cruncher
- 图像识别数据库
- 关于final
- 【U3D学习】塔防游戏01
- Android mvp 架构的自述
- springmvc /struts2工作机制
- iOS UI 的坑:不要 remove UITableViewCell 的 contentView
- Makefile 学习日记(三)——makefile的瘦身