iOS 摇一摇的功能
效果如下

相关素材

相关代码如下
#import "ShakeViewController.h"
#import <AudioToolbox/AudioToolbox.h>
#import <AVFoundation/AVFoundation.h> #define kScreenWidth [UIScreen mainScreen].bounds.size.width
#define kScreenHeight [UIScreen mainScreen].bounds.size.height @interface ShakeViewController () @property (nonatomic,strong)UIImageView *topImgView;
@property (nonatomic,strong)UIImageView *botImgView; @property (nonatomic) SystemSoundID soundID; @end @implementation ShakeViewController - (void)viewDidLoad {
[super viewDidLoad]; [UIApplication sharedApplication].applicationSupportsShakeToEdit = YES;
[self becomeFirstResponder];
self.view.backgroundColor = [UIColor colorWithRed:/255.0
green:/255.0
blue:/255.0
alpha:1.0]; [self inintImageView];
[self initSoudID];
} //初始化振动的图片
- (void)inintImageView
{
//中间线位置
CGFloat y = +(kScreenHeight-)/;
//图片的比例 宽/高
CGFloat scale = /320.0; _topImgView = [[UIImageView alloc]initWithFrame:CGRectMake(, y-(kScreenWidth*scale), kScreenWidth, kScreenWidth*scale)];
_topImgView.image = [UIImage imageNamed:@"Shake_01"];
[self.view addSubview:_topImgView]; _botImgView = [[UIImageView alloc]initWithFrame:CGRectMake(, y, kScreenWidth, kScreenWidth*scale)];
_botImgView.image = [UIImage imageNamed:@"Shake_02"];
[self.view addSubview:_botImgView];
} //对soundID进行赋值
- (void)initSoudID
{
NSString *path = [[NSBundle mainBundle] pathForResource:@"shake_sound_male" ofType:@"wav"];
AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath:path], &_soundID);
} /*************************** 振动检测 ******************************/
-(void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event
{
//播放
AudioServicesPlaySystemSound (_soundID); CGFloat y_top = _topImgView.frame.origin.y;
CGFloat y_bot = _botImgView.frame.origin.y; [UIView animateWithDuration:0.3 animations:^{ _topImgView.frame = CGRectMake(, y_top-, _topImgView.frame.size.width, _topImgView.frame.size.height);
_botImgView.frame = CGRectMake(, y_bot+, _botImgView.frame.size.width, _botImgView.frame.size.height); } completion:^(BOOL finished) { [UIView animateWithDuration:0.3 animations:^{ _topImgView.frame = CGRectMake(, y_top, _topImgView.frame.size.width, _topImgView.frame.size.height);
_botImgView.frame = CGRectMake(, y_bot, _botImgView.frame.size.width, _botImgView.frame.size.height); } completion:^(BOOL finished) { }]; }];
} -(void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event
{
[self performSelector:@selector(vibrate) withObject:nil afterDelay:0.6];
} -(void)vibrate
{
//振动
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
} @end
iOS 摇一摇的功能的更多相关文章
- iOS开发——高级技术&摇一摇功能的实现
摇一摇功能的实现 在AppStore中多样化功能越来越多的被使用了,所以今天就开始介绍一些iOS开发的比较实用,但是我们接触的比较少的功能,我们先从摇一摇功能开始 在 UIResponder中存在这么 ...
- IOS开发之——类似微信摇一摇的功能实现
首先,一直以为摇一摇的功能实现好高大上,结果百度了.我自己也模仿写了一个demo.主要代码如下: 新建一个项目,名字为AnimationShake. 主要代码: - (void)motionBegan ...
- iOS摇一摇功能、震动功能、简单的摇动动画、生成二维码图片与发送短信等几个功能
有一个开锁的功能,具体的需求就类似于微信的"摇一摇"功能:摇动手机,手机震动,手机上的锁的图片摇动一下,然后发送开锁指令.需求简单,但用到了许多方面的知识. 1.摇一摇 相对这是最 ...
- iOS 手机摇一摇功能
调用手机摇一摇功能其实很简单,在你调用的控制器的 viewDidLoad方法里调用 [UIApplication sharedApplication].applicationSupportsShake ...
- IOS端的摇一摇功能
//微信的摇一摇是怎么实现的~发现原来 ios本身就支持 //在 UIResponder中存在这么一套方法 - (void)motionBegan:(UIEventSubtype)motion wit ...
- IOS中摇一摇实现截屏(可实现问题反馈的功能)
有一段时间没有更新博客了,今天更新一篇关于最近工作中用到的一个功能,先简单描述一下:我们知道,测试人员在测试客户端产品时,当出现问题或者BUG的时候,都得先对页面截图,然后从相册中选择截图,加上一段描 ...
- iOS几个功能:1.摇一摇;2.震动;3.简单的摇动动画;4.生成二维码图片;5.发送短信;6.播放网络音频等
有一个开锁的功能,具体的需求就类似于微信的“摇一摇”功能:摇动手机,手机震动,手机上的锁的图片摇动一下,然后发送开锁指令.需求简单,但用到了许多方面的知识. 1.摇一摇 相对这是最简单的功能了. 在v ...
- 几行代码实现iOS摇一摇功能
实现这个功能很简单,我们直接看代码 - (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event{ NSLog(@&quo ...
- iOS 摇一摇功能的实现
在 UIResponder中存在这么一套方法 - (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event __OSX_A ...
- ios摇一摇功能
在 UIResponder中存在这么一套方法 - (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event __OSX_A ...
随机推荐
- IOS开发之获取Storyboard创建的ViewController
前面的两篇博客都是学习有关屏幕适配也就是相对布局的东西,这篇博客中将会学习视图间的切换.视图间的切换我们可以用代码完成或者用storyboard来建立各个视图控制器间的关系.在需要用到代码进行切换时会 ...
- 使用Free Spire.Presentation生成PowerPoint文件
使用Free Spire.Presentation生成PowerPoint文件 前言 之前有写过一篇使用Free Spire.XLS生成图表的文章,朋友圈内反应还不错,都希望我能继续写下去,把类似 ...
- Oracle手边常用命令及操作语句
Oracle手边常用命令及操作语句 作者:白宁超 时间:2016年3月4日11:24:08 摘要:日常使用oracle数据库过程中,常用脚本命令莫不是用户和密码.表空间.多表联合.执行语句等常规操作. ...
- 浅谈Hibernate入门
前言 最近打算做一个自己的个人网站,经过仔细思考,打算使用hibernate作为开发的ORM框架,因此各种找资料,由于本人是刚刚接触这技术的,所以就找了比较基础的知识来分享下 基本概述 Hiberna ...
- jQuery-1.9.1源码分析系列(十) 事件系统——事件委托
jQuery的事件绑定有几个比较优秀的特点: 1. 可以绑定不限数量的处理函数 2. 事件可以委托到祖先节点,不必一定要绑到对应的节点,这样后添加的节点也照样能被处理. 3. 链式操作 下面主要分析事 ...
- Effective java笔记(十),序列化
将一个对象编码成字节流称作将该对象「序列化」.相反,从字节流编码中重新构建对象被称作「反序列化」.一旦对象被「序列化」后,它的编码就可以从一台虚拟机传递到另一台虚拟机,或被存储到磁盘上,供以后「反序列 ...
- C#新手常犯的错误
虽然这篇post的标题是新手常犯的错误,实际上很多有经验的程序员也经常犯这些错误,我整理了一下,就当是笔记.1.遍历List的错误,比如如下代码: List<String> strList ...
- List集合去重的一种方法
前一段时间们需要对一个List<Model>集合去重,情况是该集合中会出现多个Name属性值相同的,但是其他属性值不同的数据. 在这种情况下,需求要只保留其中一个就好. 我觉得遍历和Has ...
- Win10计算器在哪里?三种可以打开Win10计算器的方法图文介绍
全新的windows10系统带来了不少新的特性和改变,其中win10的计算器位置就发生了很多的变化,导致很多网友们都以为win10计算器不见了,那么,win10计算器在哪里?如何打开?针对此问题,本文 ...
- C#基础-压缩文件及故障排除
C#压缩文件可以使用第三方dll库:ICSharpCode.SharpZipLib.dll: 以下代码能实现文件夹与多个文件的同时压缩.(例:把三个文件夹和五个文件一起压缩成一个zip) 直接上代码, ...