美文网首页ios初级篇
iOS实现“摇一摇”与“扫一扫”功能示例代码

iOS实现“摇一摇”与“扫一扫”功能示例代码

作者: 等不来的期待 | 来源:发表于2017-02-14 21:27 被阅读73次

本篇文章主要介绍了iOS实现“摇一摇”与“扫一扫”功能示例代码;有需要的朋友可以作为参考下:

“摇一摇”功能的实现:

iPhone对 “摇一摇”有很好的支持,总体说来就两步:

在视图控制器中打开接受“摇一摇”的开关;

- (void)viewDidLoad {

// 设置允许摇一摇功能

[UIApplication sharedApplication].applicationSupportsShakeToEdit = YES;

// 并让自己成为第一响应者

[self becomeFirstResponder];

}

在“摇一摇”触发的制定的方法中实现需要实现的功能(”摇一摇“检测方法)。

// 摇一摇开始摇动

- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event {

NSLog(@"开始摇动");

//添加“摇一摇”动画

[self addAnimations];

//音效

AudioServicesPlaySystemSound (soundID);

return;

}

// “摇一摇”取消摇动

- (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event {

NSLog(@"取消摇动");

return;

}

// “摇一摇”摇动结束

- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event {

if (event.subtype == UIEventSubtypeMotionShake) { // 判断是否是摇动结束

NSLog(@"摇动结束");

}

return;

}

”摇一摇“的动画效果:

- (void)addAnimations {

//音效

AudioServicesPlaySystemSound (soundID);

//让上面图片的上下移动

CABasicAnimation *translation2 = [CABasicAnimation animationWithKeyPath:@"position"];

translation2.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];

translation2.fromValue = [NSValue valueWithCGPoint:CGPointMake(160, 115)];

translation2.toValue = [NSValue valueWithCGPoint:CGPointMake(160, 40)];

translation2.duration = 0.4;

translation2.repeatCount = 1;

translation2.autoreverses = YES;

//让下面的图片上下移动

CABasicAnimation *translation = [CABasicAnimation animationWithKeyPath:@"position"];

translation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];

translation.fromValue = [NSValue valueWithCGPoint:CGPointMake(160, 345)];

translation.toValue = [NSValue valueWithCGPoint:CGPointMake(160, 420)];

translation.duration = 0.4;

translation.repeatCount = 1;

translation.autoreverses = YES;

[imgDown.layer addAnimation:translation forKey:@"translation"];

[imgUp.layer addAnimation:translation2 forKey:@"translation2"];

}

注意:在模拟器中运行时,可以通过「Hardware」-「Shake Gesture」来测试「摇一摇」功能。如下:

“扫一扫”功能的实现:

基于AVCaptureDevice做的二维码扫描器,基本步骤如下:

初始化相机,生成扫描器

设置参数

- (void)setupCamera {

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

_device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];

_input = [AVCaptureDeviceInput deviceInputWithDevice:_device error:nil];

_output = [[AVCaptureMetadataOutput alloc]init];

[_output setMetadataObjectsDelegate:self queue:dispatch_get_main_queue()];

_session = [[AVCaptureSession alloc]init];

[_session setSessionPreset:AVCaptureSessionPresetHigh];

if ([_session canAddInput:self.input])

{

[_session addInput:self.input];

}

if ([_session canAddOutput:self.output])

{

[_session addOutput:self.output];

}

// 条码类型 AVMetadataObjectTypeQRCode

_output.metadataObjectTypes = [NSArray arrayWithObjects:AVMetadataObjectTypeEAN13Code, AVMetadataObjectTypeEAN8Code, AVMetadataObjectTypeCode128Code, AVMetadataObjectTypeQRCode, nil];

dispatch_async(dispatch_get_main_queue(), ^{

//更新界面

_preview =[AVCaptureVideoPreviewLayer layerWithSession:self.session];

_preview.videoGravity = AVLayerVideoGravityResizeAspectFill;

_preview.frame = CGRectMake(0, 0, CGRectGetWidth(self.centerView.frame), CGRectGetHeight(self.centerView.frame));

[self.centerView.layer insertSublayer:self.preview atIndex:0];

[_session startRunning];

});

});

}

处理扫描结果:

- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection {

NSString *stringValue;

if ([metadataObjects count] >0){

AVMetadataMachineReadableCodeObject * metadataObject = [metadataObjects objectAtIndex:0];

stringValue = metadataObject.stringValue;

NSLog(@"%@",stringValue);

}

[_session stopRunning];

[timer invalidate];

_count ++ ;

[self stopReading];

if (stringValue && _count == 1)

{//扫描完成}

}

用二维码扫描器扫描自己的二维码:

NSString *url = [NSURL URLWithString:@"html/judgement.html" relativeToURL:[ZXApiClient sharedClient].baseURL].absoluteString;

if ([stringValue hasPrefix:url]) {

//如果扫出来的url是自己的域名开头的,那么做如下的处理

}

相关文章

  • iOS实现“摇一摇”与“扫一扫”功能示例代码

    本篇文章主要介绍了iOS实现“摇一摇”与“扫一扫”功能示例代码;有需要的朋友可以作为参考下: “摇一摇”功能的实现...

  • ios 摇一摇实现

    原文地址:iOS使用CoreMotion实现摇一摇功能 现在网上介绍的iOS摇一摇功能,基本是以借助系统的Shak...

  • 摇一摇

    对于摇一摇功能 iOS 中已经提供了接口.直接调用就好了.实现步骤:1). 监听摇一摇方法 2). 实现下面的方法...

  • iOS摇一摇功能实现

    看到微信的摇一摇功能是不是感觉很神奇呢?其实在iOS里想要实现摇一摇功能很简单,方法如下: 先在targets -...

  • 20170602--日报

    20170602--日报 1.早上 需求评审会 产品经理根据原型和流程图,说明下一迭代要上线的功能。扫一扫摇一摇 ...

  • iOS 实现扫一扫功能

    iOS 实现扫一扫功能要用到如下几个对象: 然后基本配置如下: 扫描结果的代理: 下面贴上所有代码: 所需要的图片:

  • iOS 摇一摇功能实现

    实现摇一摇功能只需要当前Controller支持摇动功能,Controller默认是支持的,同时让它成为第一响应者...

  • iOS 摇一摇功能 可自定义摇动力度等

    现在网上介绍的iOS摇一摇功能,基本是以借助系统的ShakeToEdit功能来实现,什么是ShakeToEdit?...

  • 对于微信实验室里面的看一看和搜一搜功能,你们有什么看法和建议吗?

    这四个“一”都能编个儿歌了。 扫一扫:最大功能跟钱有关系 摇一摇:最大功能跟交友关系 看一看:跟第二个腾讯视频有关...

  • iOS「摇一摇」功能的实现

    iOS 系统在 UIResponder 类中提供了一个摇一摇的实现方法,大体实现思路为: 想让哪个 VC 实现摇一...

网友评论

  • SHRookie:您好 这个 摇动的次数怎么记录呢

本文标题:iOS实现“摇一摇”与“扫一扫”功能示例代码

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