美文网首页CALayer
iOS 实现波纹Mask动画

iOS 实现波纹Mask动画

作者: lyonLiu | 来源:发表于2018-03-02 11:17 被阅读167次
先给大家看看最终呈现的效果图
层级介绍
WechatIMG119.jpeg
代码实现
//
//  ViewController.m
//  BB
//
//  Created by lyon Liu on 2018/3/1.
//  Copyright © 2018年 lyon Liu. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIImageView *hollowImageView;

@property (weak, nonatomic) IBOutlet UIImageView *soildImageView;

@property (weak, nonatomic) IBOutlet UIView *bgView;
@property (strong, nonatomic) UIView *waveView;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
   
    UIImage *soildImage = [UIImage imageNamed:@"icon_love_solid"];//实心图片
    UIImage *waveImage = [UIImage imageNamed:@"icon_love_wave"];    //波浪图片

    //让波浪在心形图片中间
    self.bgView.frame = CGRectMake(0, self.soildImageView.frame.origin.y + 25, self.view.frame.size.width, waveImage.size.height);
    self.waveView = [UIView new];
    self.waveView.backgroundColor = [UIColor colorWithPatternImage:waveImage];
    self.waveView.frame = self.bgView.bounds;
    [self.bgView addSubview:self.waveView];

    //将实心图片作为遮罩层
    CALayer *maskLayer = [CALayer layer];
    maskLayer.frame = CGRectMake(0, 0, soildImage.size.width, soildImage.size.height);
    maskLayer.position = CGPointMake(self.waveView.center.x, 21);
    maskLayer.contents = (id)(soildImage.CGImage);
    self.bgView.layer.mask = maskLayer;

    //开始做动画
    __block NSInteger maxValue = 0;
    [NSTimer scheduledTimerWithTimeInterval:0.02 repeats:YES block:^(NSTimer * _Nonnull timer) {
        CGRect frame = self.waveView.frame;
        //当最大值大于等于最大宽度时,还原位置
        maxValue +=2;
        if (maxValue >= waveImage.size.width) {
            maxValue = 0;
        }
        frame.origin.x = maxValue;
        self.waveView.frame = frame;
    }];
    
    //这个是小星星不停的波纹中冲击
    [NSTimer scheduledTimerWithTimeInterval:0.5 repeats:YES block:^(NSTimer * _Nonnull timer) {
        UIImageView *imageView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"icon_love_small"]];
        CGRect frame = imageView.frame;
        frame.origin.x = 300;
        frame.origin.y = 350;
        imageView.frame = frame;
        [self.view insertSubview:imageView belowSubview:self.soildImageView];
        [UIView animateWithDuration:1.5 animations:^{
            CGRect frame = imageView.frame;
            frame.origin.x = self.soildImageView.center.x;
            frame.origin.y = 320;
            imageView.frame = frame;
        }completion:^(BOOL finished) {
            [imageView removeFromSuperview];
        }];
    }];
}

@end

相关文章

  • iOS 实现波纹Mask动画

    层级介绍 代码实现

  • iOS 动画 - 窗景篇(一)

    iOS 有一种动画,使用虽然简单,但能实现很多有趣的效果,那就是 mask 动画。 如果你还不了解 mask 动画...

  • CoreAnimation动画(一):遮罩动画/注水动画

    遮罩动画/注水动画 一般用CoreAnimation+mask 来实现其动画效果。mask指lyaer.mask属...

  • CSS3动画(2):mask实现line-wipe动画

    这次给大家带来的动画是使用mask(蒙版)实现line-wipe动画。效果如下: 例如:-webkit-mask-...

  • iOS 实现水波纹动画

    时间不多 时间不多 直接给各位看效果 根据自己的实际情况修改如果有什么问题提出来大家讨论等项目结束空闲时间,会弄一...

  • 动效解析工厂:Mask 动画

    动效解析工厂:Mask 动画 动效解析工厂:Mask 动画

  • iOS动画-扩散波纹效果

    最终效果 实现思路 动画的表现形式是颜色以及大小的变化,整体效果可以看做多个单独的波纹效果的叠加。因此我们可以创建...

  • iOS水波纹动画

    最近在学习动画,就做了一个简单的水波纹动画。这个效果可以用在部分个人中心页的边界或者进度的显示。 先附上githu...

  • iOS 水波纹动画

    春节后经过数天的努力上架了公司一个项目后,暂时又进入了空闲期,于是就着手整理一下项目中遇到的一些有意思的需求。废话...

  • iOS-制作波纹动画

    在网易新闻和其他的APP中,大家可能都观察到了在个人中心里面,有一个水波纹一样的动画效果,这个功能还是非常的有用的...

网友评论

    本文标题:iOS 实现波纹Mask动画

    本文链接:https://www.haomeiwen.com/subject/ictaxftx.html