iOS APP图标长按抖动效果的实现(CAAnimation)



实现效果:当长按图标时,图标抖动,点击图标以外区域时停止抖动



工程下载:github工程下载


@interface ViewController ()
{
    UIImageView *imageView;
}
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
    imageView.center = self.view.center;
    imageView.image = [UIImage imageNamed:@"icon1"];
    imageView.userInteractionEnabled = YES;
    [self.view addSubview:imageView];

    //添加长按手势
    UILongPressGestureRecognizer *recognize = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPress)];
    //长按响应时间
    recognize.minimumPressDuration = 1;
    [imageView addGestureRecognizer:recognize];
    // Do any additional setup after loading the view, typically from a nib.
}


手势响应

- (void)longPress {
    CABasicAnimation *animation = (CABasicAnimation *)[imageView.layer animationForKey:@"rotation"];
    if (animation == nil) {
        [self shakeImage];
    }else {
        [self resume];
    }
}
//如果点击图标外区域,停止抖动
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [touches anyObject];
    CGPoint point = [touch locationInView:self.view];
    //转换坐标系,判断touch点是否在imageView内,在的话,仍然抖动,否则停止抖动
    CGPoint p = [self.view convertPoint:point toView:imageView];
    if (![imageView pointInside:p withEvent:event]) {
        NSLog(@"xxxxxxx");
        [self pause];
    }
}

//layer.speed
/* The rate of the layer. Used to scale parent time to local time, e.g.
 * if rate is 2, local time progresses twice as fast as parent time.
 * Defaults to 1. */
//这个参数的理解比较复杂,我的理解是所在layer的时间与父layer的时间的相对速度,为1时两者速度一样,为2那么父layer过了一秒,而所在layer过了两秒(进行两秒动画),为0则静止。
- (void)pause {
    imageView.layer.speed = 0.0;
}

- (void)resume {
    imageView.layer.speed = 1.0;
}


动画设置

- (void)shakeImage {
    //创建动画对象,绕Z轴旋转
    CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];

    //设置属性,周期时长
    [animation setDuration:0.08];

    //抖动角度
    animation.fromValue = @(-M_1_PI/2);
    animation.toValue = @(M_1_PI/2);
    //重复次数,无限大
    animation.repeatCount = HUGE_VAL;
    //恢复原样
    animation.autoreverses = YES;
    //锚点设置为图片中心,绕中心抖动
    imageView.layer.anchorPoint = CGPointMake(0.5, 0.5);

    [imageView.layer addAnimation:animation forKey:@"rotation"];
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-30 00:40:53

iOS APP图标长按抖动效果的实现(CAAnimation)的相关文章

iOS App图标和启动画面尺寸

iOS App图标和启动画面尺寸 作者 简述呢 关注 注意:iOS所有图标的圆角效果由系统生成,给到的图标本身不能是圆角的. 1. 桌面图标 (app icon) for iPhone6 plus(@3x) : 180 x 180 for iPhone 6/5s/5/4s/4(@2x) : 120 x 120 2. 系统搜索框图标 (Spotlight search results icon) for iPhone6 plus(@3x) : 120 x 120 for iPhone6/5s/5/

IOS APP 图标

像我一样记不住iOS应用图标像素尺寸的开发者不在少数,我经常需要查询不同设备上的应用尺寸,为了方便自己.方便大家,我制作了下面的图表供大家参考. iPhone.iPodTouch以及一般通用的应用图标像素尺寸是多少? iPhone和iPodTouch应用需要一般应用所有的图标像素,你可能会想知道为什么iPhone应用需要iPad应用图标,因为一款iPhone应用也可以在iPad上运行. 相反,iPad应用不能在iPhone上运行,因此iPad应用有专属自己的图标像素. 必需图标: AppStor

iOS APP图标一键生成

随着工龄的渐长,发觉越来越懒,对于繁琐的事情,总想少干点,就像今天提及的APP图标这个事,往常的做法无非是两种,一是让UI工程师提供所有尺寸的图标,二是UI工程师给出一个大图标,自己缩小,方法一可谓是害己又害人,虽然开发者的工作量少,但一旦图标调整,苦了UI工程师,又累了开发者(要自己替换图标):方法二,那可是够累,打开PS,调整图像大小,保存,调整图像大小,保存-,今天可谓终于忍无可忍,决定写一个脚本ios-icon-generator,下面简单介绍下. 环境预备 它是一个shell脚本,可以

16.iOS APP图标和启动画面尺寸

1. 桌面图标 (app icon) for iPhone6 plus(@3x) : 180 x 180 for iPhone 6/5s/5/4s/4(@2x) : 120 x 120 2. 系统搜索框图标 (Spotlight search results icon) for iPhone6 plus(@3x) : 120 x 120 for iPhone6/5s/5/4s/4(@2x) : 80 x 80 3. 系统设置图标 (Settings icon) for iPhone6 plus(

仿IPhone 长按图标删除应用,图标抖动效果

仿IPhone 长按图标删除应用,图标抖动效果 使用ValueAnimator类实现,长点击图标,图标抖动的效果,可以自己规定抖动的程度大小. 由于Animator类是在android3.0之后才加上去的,所以,为了兼容3.0以下的机子,就导入了nineoldandroid.jar包,实现兼容. 工程源代码: 点击下载 仿IPhone 长按图标删除应用,图标抖动效果

学习制作iOS程序第二天:创建子目录、更改项目名称、修改启动画面、修改类前缀、新建启动控制器、修改APP图标

四.根据实际情况创建相应的目录 删除系统默认的部分文件ViewController.h,ViewController.m,Main.storyboard.LaunchScreen.xib 目录根据情况创建,每个人都会不一样的.我的如下. 五:更改项目名称 1.进入项目的Targets属性,找到Build Settings,搜索Product Name,修改属性为真实的软件名称. 2.打开Supporting Files目录下的Info.plist,修改Bundle name为真实的软件名称. 3

APP图标设计小技巧:在iOS上快速获得APP图标的真实预览图

严格来说,这并不是一篇关于前端开发的文章,因为涉及到的知识非常浅.这只是一个向设计狮们分享的小经验,只是其中用到了一些前端内容. 最近接了个私活,了解到一个初创公司正在高价悬赏Logo(主要用于APP图标),我便投稿试了试,结果真的被选中了,得到了我认为远超Logo本身价值的奖金(看来跟着拿到投资的初创公司混真的有肉吃啊).闲话不表,设计完Logo之后我灵机一动,用iOS系统做了一个APP图标真实效果预览图,一起发给了甲方. 我们假设刚做好的Logo是下面这样的(这是样例图标,用我开发的UWP应

iOS获取app图标和启动图片名字(AppIcon and LaunchImage's name)

在某种场景下,可能我们需要获取app的图标名称和启动图片的名称.比如说app在前台时,收到了远程通知但是通知栏是不会有通知提醒的,这时我想做个模拟通知提示,需要用到icon名称:再比如在加载某个控制器时,想设置该控制器的背景图片为启动图片,需要用到启动图片名称. 而事实上icon图片放在系统AppIcon文件夹里,启动图片放在系统LaunchImage文件夹里,取这些图片的名称和其他一般资源图片名称不一样. 为了方便举例子,咱们先简单粗暴点 假设当前项目只支持iPhone设备,并且只支持竖屏:而

IOS APP的所有图标尺寸规范

转自: http://blog.csdn.net/chonbj/article/details/25133247 像我一样记不住iOS应用图标像素尺寸的开发者不在少数,我经常需要查询不同设备上的应用尺寸,为了方便自己.方便大家,我制作了下面的图表供大家参考. iPhone.iPodTouch以及一般通用的应用图标像素尺寸是多少? iPhone和iPodTouch应用需要一般应用所有的图标像素,你可能会想知道为什么iPhone应用需要iPad应用图标,因为一款iPhone应用也可以在iPad上运行