您的位置:首页 > 移动开发 > IOS开发

模拟长按图标,图标抖动效果

2016-08-16 08:45 459 查看
大体思路:前面的创建图片视图就不讲了,

1.创建长按手势UILongPressGestureRecognizer并添加到视图上

2.创建CAAnimation动画,因为图标抖动是左右旋转的一种效果,弧度不是很大,计算一个较小的弧度,设置动画运动轨迹animation.values = @[];旋转应该是绕z轴旋转

3.因为是一直动,所以将动画重复次数设置为MACFLOAT,设置动画持续时间为几秒,因为左右抖动的时间比较快

4.最后就是把动画添加到图片图层



//
//  ViewController.m
//  LongPressAnimation
//
//  Created by mac on 16/8/15.
//  Copyright © 2016年 zxj. All rights reserved.
//

#import "ViewController.h"

@interface ViewController () {

//创建图标视图
UIImageView *aconImageV;
}

@end

@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad];

//创建图标视图
aconImageV = [[UIImageView alloc] initWithFrame:CGRectMake(100, 100, 150, 150)];
aconImageV.image = [UIImage imageNamed:@"p4.jpg"];
//圆角和裁剪一起使用,才能使图片有圆角的效果
//设置圆角
aconImageV.layer.cornerRadius = 20;
//裁剪超出视图的部分
aconImageV.layer.masksToBounds = YES;
//一定要开启用户交互
aconImageV.userInteractionEnabled = YES;

[self.view addSubview:aconImageV];

//创建并添加长按手势
UILongPressGestureRecognizer *longP = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressGAciton)];
[aconImageV addGestureRecognizer:longP];
}

#pragma mark - 长按调用的方法
- (void) longPressGAciton {

//获取动画
CAAnimation *animation = [self rotationAnimation];
//将动画添加到图片图层
[aconImageV.layer addAnimation:animation forKey:nil];
}

#pragma mark - 抖动方法
- (CAAnimation *) rotationAnimation {

//1.创建动画
//这里的transform一定不要误写成transition!
CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"transform.rotation.z"];
//持续时间,无限循环
animation.duration = 0.2;
//计算弧度30度
CGFloat angle = M_PI/60;

//设置动画轨迹(不变,左边,不变,右边,不变)
animation.values = @[@0,@(-angle),@0,@(angle),@0];

//设置重复次数
animation.repeatCount = MAXFLOAT;

return animation;
}

@end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  动画 iOS