活动指示器、音量震动条、立体折叠、倒影

活动指示器

//CAReplicatorLayer 复制图层,可以把图层里面所以子层复制
    // 创建复制图层
    CAReplicatorLayer *repL = [CAReplicatorLayer layer];
    
    repL.frame = _bgView.bounds;
    
    [_bgView.layer addSublayer:repL];
    
    CALayer *layer = [CALayer layer];
    
    layer.transform = CATransform3DMakeScale(0, 0, 0);
    
    layer.position = CGPointMake(_bgView.bounds.size.width/2, 10);
    
    layer.bounds = CGRectMake(0, 0, 10, 10);
    
    layer.backgroundColor = [UIColor greenColor].CGColor;
    
    [repL addSublayer:layer];
    
    //设置缩放动画
    CABasicAnimation *anim = [CABasicAnimation animation];
    
    anim.keyPath = @"transform.scale";
    
    anim.fromValue = @1;
    
    anim.toValue = @0;
    
    anim.repeatCount = MAXFLOAT;
    
    CGFloat duration = 0.1;
    
    int count = 16;
    
    anim.duration = duration * count;
    
    CGFloat angle = M_PI * 2 / count;
    //设置子层总数 即:复制层中有多少个子层,包括原始层
    repL.instanceCount = count;
    //设置复制层子层的动画 相对于上个子控件的动画
    repL.instanceTransform = CATransform3DMakeRotation(angle, 0, 0, 1);
    //距离上一个控件动画的延迟时间
    repL.instanceDelay = duration;
    
    [layer addAnimation:anim forKey:nil];
10C487B9-25BA-40B4-B6BC-8362A49AE381.png

音量震动条

//CAReplicatorLayer 复制图层,可以把图层里面所以子层复制
    // 创建复制图层
    CAReplicatorLayer *repL = [CAReplicatorLayer layer];
    
    repL.frame = _bgView.bounds;
    
    [_bgView.layer addSublayer:repL];
    
    CALayer *layer = [CALayer layer];
    
    layer.anchorPoint = CGPointMake(0.5, 1);
    
    layer.position = CGPointMake(15 , _bgView.bounds.size.height);
    
    layer.bounds = CGRectMake(0, 0, 15, 100);
    
    layer.backgroundColor = [UIColor greenColor].CGColor;
    
    [repL addSublayer:layer];
    
    //设置缩放动画
    CABasicAnimation *anim = [CABasicAnimation animation];
    
    anim.keyPath = @"transform.scale.y";
    
    anim.toValue = @0.1;
    
    anim.repeatCount = MAXFLOAT;
    
    anim.duration = 0.5;
    // 设置动画反转
    anim.autoreverses = YES;
    
    //设置子层总数 即:复制层中有多少个子层,包括原始层
    repL.instanceCount = 6;
    //设置复制层子层的偏移量 相对于上个子控件的动画
    repL.instanceTransform = CATransform3DMakeTranslation(25, 0, 0);
    //距离上一个控件动画的延迟时间
    repL.instanceDelay = 0.1;
    
    [layer addAnimation:anim forKey:nil];
DD69BCF0-22F2-4C15-9305-0522773D37A6.png

立体折叠

@interface WatchViewController ()
@property (weak, nonatomic) IBOutlet UIImageView *topImageV;
@property (weak, nonatomic) IBOutlet UIImageView *bottomImageV;
@property (weak, nonatomic) IBOutlet UIView *drawView;

@property (nonatomic ,assign) CAGradientLayer *gradientL;
@end

@implementation WatchViewController
- (void)viewDidLoad
{
    [super viewDidLoad];
    // 通过设置contentsRect 可以设置图片显示的尺寸,
    _topImageV.layer.contentsRect = CGRectMake(0, 0, 1, 0.5);
    _topImageV.layer.anchorPoint = CGPointMake(0.5, 1);
    _bottomImageV.layer.contentsRect = CGRectMake(0, 0.5, 1, 0.5);
    _bottomImageV.layer.anchorPoint = CGPointMake(0.5, 0);
    
    //设置图层 阴影效果
    CAGradientLayer *gradientL = [CAGradientLayer layer];
    
    gradientL.frame = _bottomImageV.bounds;
    
    gradientL.colors = @[(id)[UIColor clearColor].CGColor,(id)[UIColor blackColor].CGColor];
    
//    gradientL.locations = @[@0.1 ,@0.3];
    
    gradientL.opacity = 0.0;
    
    _gradientL = gradientL;
    [_bottomImageV.layer addSublayer:gradientL];
    
    UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(pan:)];
    [_drawView addGestureRecognizer:pan];
}
- (void)pan:(UIPanGestureRecognizer*)pan
{
    CGPoint transP = [pan translationInView:_drawView];
    
    // 旋转角度, 往下逆时针旋转
    CGFloat angle = -transP.y / 182.0 * M_PI;
    
    CATransform3D transfrom = CATransform3DIdentity;
    
    // 增加旋转的立体感,近大远小
    transfrom.m34 = -1 / 500.0;
    
    transfrom = CATransform3DRotate(transfrom, angle, 1, 0, 0);
    
    _topImageV.layer.transform = transfrom;
    
    // 设置阴影效果
    _gradientL.opacity = transP.y * 1 / 200.0;
    
    //结束的时候 反弹
    if (pan.state == UIGestureRecognizerStateEnded)
    {
        //弹簧效果的动画
        //SpringWithDamping 弹簧系数,越小,弹簧效果越明显
        //delay 动画延迟时间
        //SpringVelocity 速度通常0
        [UIView animateWithDuration:0.25 delay:0 usingSpringWithDamping:0.3 initialSpringVelocity:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
            
            //回到默认效果
            _topImageV.layer.transform = CATransform3DIdentity;
            
            _gradientL.opacity = 0.0;
            
        } completion:^(BOOL finished) {
            
        }];
    }
    
    
}

@end
6F682C8E-C83C-4EA7-8D3B-47AF14BDD240.png

倒影

#import "aaDrawView.h"
@interface aaDrawView ()

@end
@implementation aaDrawView
// 设置控件主层的类型  默认是CALayer
+ (Class)layerClass
{
    return [CAReplicatorLayer class];
}

@end
#import "WatchViewController.h"
#import "aaDrawView.h"
@interface WatchViewController ()
@property (weak, nonatomic) IBOutlet aaDrawView *repView;

@end

@implementation WatchViewController
- (void)viewDidLoad
{
    [super viewDidLoad];
    CAReplicatorLayer *layer = (CAReplicatorLayer *) _repView.layer;
    
    layer.instanceCount = 2;
    
    CATransform3D transform = CATransform3DMakeTranslation(0, _repView.bounds.size.height, 0);
    // 绕着X轴旋转
    transform = CATransform3DRotate(transform, M_PI, 1, 0, 0);
    
    // 往下平移控件的高度
    layer.instanceTransform = transform;
    
    layer.instanceRedOffset = -0.1;
    layer.instanceBlueOffset = -0.1;
    layer.instanceGreenOffset = -0.1;
    layer.instanceAlphaOffset = -0.1;
}

27BA1903-6EBC-4591-9EC9-F81397EC4D9F.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,835评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,598评论 1 295
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,569评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,159评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,533评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,710评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,923评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,674评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,421评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,622评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,115评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,428评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,114评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,097评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,875评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,753评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,649评论 2 271

推荐阅读更多精彩内容

  • 图片折叠效果 1.如何制作图片折叠效果? `把一张图片分成两部分显示,上面一部分,下面一部分,折叠上面部分的内容。...
    Hevin_Chen阅读 449评论 0 1
  • 原文链接:https://github.com/opendigg/awesome-github-android-u...
    IM魂影阅读 32,787评论 6 472
  • 我读书却不用心,是至今最大的幸运,我能在一个个不同的圈子里脱颖而出,是因为很多有才华的男人都在男孩时代被书本钉死了
    南苫南阅读 165评论 0 1
  • 【梧桐落叶】 今日8:10分吃完早餐 沿着园区快步走了一小圈 蹲下来随手拍了一堆梧桐落叶 梧桐黄了,霜降了,要开始...
    小梅弄堂阅读 251评论 0 1
  • 和李先生聊天 告诉他 下了一个王者 和电脑玩被打死三次 家家笑我 讲没见过这么菜的 然后带我玩了一把 跟着后面...
    AI爱安阅读 200评论 0 0