美文网首页iOS开发博客积累iOS
iOS开发撩妹篇——心中所爱

iOS开发撩妹篇——心中所爱

作者: Lol刀妹 | 来源:发表于2016-08-11 22:00 被阅读3334次
    心中所爱

    这是一个感人的故事,故事是这样的:

    • 男孩(动情的):你是我最爱的女孩。。。
    • 女孩(不屑的):切~
    • 男孩(坚定地):不信你看!

    男孩拿出iPhone,打开一个APP,让女孩扫自己的胸膛。几秒后,手机里出现女孩的照片!!!

    • 男孩(深情的):这就是我心中最爱的女孩。。。
    • 女孩(感动的):你麻痹你越来越会撩了😂

    然而,事实是这样的:

    一个屌丝菜逼程序员要做二维码扫描功能,但是他不会,于是他急中生智在网上下载了一个demo,demo完美无bug,菜逼大喜过望,于是幻想着假如自己有女票的话。。。于是便诞生了上面那个感人的爱情故事,没错那个菜逼就是我😓

    其实,原理是这样的:

    UIImagePickerController选取心爱女孩的照片并保存到单例中,然后打开二维码扫描界面,10秒后跳转到以心爱女孩为背景的单纯界面。

    撩妹步骤分析:

    • 将心爱女孩的照片弄到手(最好是好看点的。。。)
    • 打开Xcode
    • 复制代码
    • 粘贴代码
    • 真机调试
    • 关闭Xcode
    • 开撩

    PS:一步一个脚印,心急吃不了热豆腐

    撩妹重难点分析

    1. 打开相册选取图片
    // 注意代理
    @interface ViewController ()<UIPickerViewDelegate,UINavigationControllerDelegate>
    /** 选取心爱girl的照片 */
    - (void)chooseLoveGirl{
        // 选取照片
        UIImagePickerController * ipc = [[UIImagePickerController alloc]init];
        
        // 设置委托
        ipc.delegate = self;
        
        // 设置允许编辑
        ipc.allowsEditing = YES;
        
        // 设置指定类型的图片格式
        ipc.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType:
    UIImagePickerControllerSourceTypePhotoLibrary];
        //    UIImagePickerControllerSourceTypePhotoLibrary, 照片
        //    UIImagePickerControllerSourceTypeCamera,  相机
        //    UIImagePickerControllerSourceTypeSavedPhotosAlbum  相册
        // 设置图片来源,模拟器不支持相机
        ipc.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
        
        // 显示UIImagePickerController
        [self presentViewController:ipc animated:YES completion:nil];
    }
    
    // 选取照片成功后回调
    - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{
        
        NSLog(@"%@",info);
        // 获取原始图片
        UIImage * originalImage = info[UIImagePickerControllerOriginalImage];
        // 获取编辑图片
        UIImage * editImage = info[UIImagePickerControllerEditedImage];
        // 将原始图片显示到UIImageView上
        _imageView.image = originalImage;
        // 将编辑后的图片放进去
        _imageView.image = editImage;
        // 将模态显示的视图控制器消失
        [picker dismissViewControllerAnimated:YES completion:nil];
    }
    
    // 取消选取图片
    - (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{
        [picker dismissViewControllerAnimated:YES completion:nil];
    }
    

    2.二维码扫描

    - (void)setupCamera
    {
        // Device
        _device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
        
        // Input
        _input = [AVCaptureDeviceInput deviceInputWithDevice:self.device error:nil];
        
        // Output
        _output = [[AVCaptureMetadataOutput alloc]init];
        [_output setMetadataObjectsDelegate:self queue:dispatch_get_main_queue()];
        
        // Session
        _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 =@[AVMetadataObjectTypeQRCode];
        dispatch_async(dispatch_get_main_queue(), ^{
            // Preview
            _preview =[AVCaptureVideoPreviewLayer layerWithSession:self.session];
            _preview.videoGravity = AVLayerVideoGravityResizeAspectFill;
            _preview.frame =CGRectMake(20,94,screenWidth-40,280);
            [self.view.layer insertSublayer:self.preview atIndex:0];
            
            // Start
            [_session startRunning];
        });
    }
    #pragma mark AVCaptureMetadataOutputObjectsDelegate
    - (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection
    {
        
        NSString *stringValue;
        
        if ([metadataObjects count] >0)
        {
            AVMetadataMachineReadableCodeObject * metadataObject = [metadataObjects objectAtIndex:0];
            stringValue = metadataObject.stringValue;
        }
        
        [_session stopRunning];
        
        [timer invalidate];
    
    }
    

    代码拿走,妹纸我有:

    撩妹源代码
    PS:若对我的代码有争议,欢迎探讨。毕竟,哥敲的不是代码,是爱情。

    后记:

    前提你得有个女票😜
    如果你没有女票,请努力敲代码
    如果你有女票,请一定珍惜,不要因为敲代码而冷落了女票(我今天已经告诉你们了:即使是敲代码也可以逗女票开心
    “说得就像你有女票一样😒”

    很强势

    相关文章

      网友评论

      • b2f70a645712:汪汪 现在你说的这些我都会了 那么女朋友去哪领 还是等你发:scream:
      • Sunshine喵小喵:来个汉子,用这个撩一下,不知能否通用:joy:
        Lol刀妹:@爱Sunshine兔 :smile:可以,对汉子用效果更佳:joy:
      • 魔法黛:你确认不是趁着扫描的时候盯着人家的胸看十秒钟?
        Lol刀妹:@魔法黛 :sweat_smile:
      • 58764a85f791:看起来好厉害的样纸
        Lol刀妹:@望日莲梦菲 小意思:smile:
      • Charles___:可以,很6。。。
        Lol刀妹:@CharlesJF :sweat_smile:
      • 轻拂丶肩上雪:可以 兄弟 你很强势 源码链接看的我一愣一愣的
        Lol刀妹:@熟练NSLog 小意思:stuck_out_tongue:
      • df0fa4542909:这样是不是一直需要把二维码贴在胸口上啊。。。。
        Lol刀妹:@Ryden_Sun :smile:
        df0fa4542909:@无夜之星辰 6666我服你这一波
        Lol刀妹:@Ryden_Sun 汗,定时器定时跳转啊,无需真扫:smile:
      • ibiaoma:像你这种用代码忽悠妹子的,我见一个赞一个。 :+1:
        Lol刀妹:@ibiaoma 像你这种不吝惜点赞的,我见一个关注一个 :clap:
      • 游城十代2dai:问一下, 你的属性imageView为他赋值两次, 有什么意义么, 直接赋值editImage不就行了么,, 还有你的NSTimer放在了哪里
        Lol刀妹:@游城十代2dai 定时器就放到扫描的那个页面,设置几秒后跳转到女票页面就可以了
        游城十代2dai:@无夜之星辰 e 额..你的定时器放在哪里用的, 是相机的协议方法里面么~
        Lol刀妹:@游城十代2dai 可以,很强势:sunglasses:
      • 幸福已倒带:怎么弄的图片啊 没明白呢
        Lol刀妹:@幸福已倒带 1351675135
        幸福已倒带:@无夜之星辰 是扫描完事之后跳转到VC界面加个图片么,我得没有实现,扫码完事就停在那了,我写了跳转方法不好使啊,能加个扣扣么,想让大神指导下
        Lol刀妹:@幸福已倒带 你可以直接把你女票的照片拖进工程使用,这样就不需要用代码打开相册了
      • ZIIYII:代码在哪里开始插入的 求大神指点一二 新司机上路
        ZIIYII:@无夜之星辰 好的 谢谢
        Lol刀妹:@ZIIYII 我只贴了部分代码,如果你想找二维码扫描的demo,可以去code4App或者cocoaChina看看
      • 丶雨凡:很简单的啦:camera:
        Lol刀妹:@丶雨凡 秋名山:sunglasses:
        丶雨凡:@无夜之星辰 老司机在哪里开车啊? :stuck_out_tongue_winking_eye:
        Lol刀妹:@丶雨凡 是的:blush:
      • 风飞燕:太坑了撒,撩妹源代码居然是百度。。。。。。。
        Lol刀妹:@风飞燕 培养解决问题的能力很重要:stuck_out_tongue:
      • CloudL:有意思
        Lol刀妹:@CloudL :stuck_out_tongue:
      • 如风家的秘密:哈哈,有意思...
        Lol刀妹:@如风家的秘密 因缺斯婷:sweat_smile:
      • 弗思耳:哈哈,喜欢程序员这种闷骚型小浪漫。
        Lol刀妹:@弗思耳 :stuck_out_tongue_closed_eyes::joy:
      • 70f82b95aca7:然后该女发现无论扫谁心里都是她..果断找了个高富帅扫了扫.遂在一起.
        给你快乐:@囧囧撸代码 回复错了,这个才是神评
        给你快乐:@无夜之星辰 段子看多了吧,你这绝对是神评论
        Lol刀妹:@囧囧撸代码 老司机最怕你这种不按套路上车的乘客,太可怕了:scream:
      • 爱上别的吧:666 很强势
        Lol刀妹:@爱上别的吧 :stuck_out_tongue_winking_eye:
      • 201630fb3114:一个拍照,然后二维码扫描的事件。被你用撩妹形容的。。老司机,求带
        Lol刀妹:@情到深处流下的才是泪 其实我只是想告诉大家一个简单的道理:撩妹,不需要花言巧语,也不需要一掷千金,更不需要套路。撩妹,只需要一颗真挚和纯真的心(ps:请系好安全带,开车了)
      • Abner_XuanYuan:为什么链接打开是百度呢???
        Lol刀妹:@轩辕辉 笔者旨在锻炼读者解决问题的能力。:blush:这波很关键,也很强势:sunglasses:
      • Oooh:可以,这很强势
        Lol刀妹:@Oooh 强势撩妹不解释:sunglasses:
      • 一年级二班的小李:卧槽,奶强,很好很强大
        Lol刀妹:@TuringLi 可能是大家都比较认可我写的吧,毕竟我的这篇文章真实、真挚、纯真、唯美以及毫无套路,所以获得了大家的一致好评:smiley:
        一年级二班的小李:@无夜之星辰 可以的,大奶,都上首页了,吓我一跳,很好, 这很奶强
        Lol刀妹:@TuringLi 纯属娱乐:smile:
      • 实在不想取名字:这很程序员
        实在不想取名字:@无夜之星辰 又没强行喂了波狗粮 ,
        Lol刀妹:@季节终将逝去 对,这么专业的撩妹方式一看就是程序员:smile:
      • 叶舞清风:心中有爱
        Lol刀妹:@叶舞清风 你们只评论却不点赞,我心中有爱,然而世界无爱:sleepy:
      • 马铃薯蜀黍:我以为你把二维码文在了胸膛
        Lol刀妹:@马铃薯蜀黍 这撩妹代价也太高了点 不过话说回来 装模作样扫描的时候千万别真的扫到什么东西跳转了 要不然就有点尴尬咯:joy:
      • 马铃薯蜀黍:还没有看文章~~希望你不是标题党
        Lol刀妹:@马铃薯蜀黍 你可以喜欢了再看,这可是撩妹实用干货哦:sunglasses:
      • gao_smile:赞一个。哈哈哈
        Lol刀妹:@gao_smile 哇,萌妹纸!:heart_eyes:
      • fe2cd300a05a:链接是百度是什么鬼?
        Lol刀妹:@请叫我小痞子丶 其实实现起来很简单的,毕竟思路我都告诉你咯:smile:
        fe2cd300a05a:@无夜之星辰 6的一笔啊
        Lol刀妹:@请叫我小痞子丶 如果你需要撩妹源代码,请自行百度:grin:
      • 肖显圣:说好的源码呢???
        肖显圣:@无夜之星辰 …
        Lol刀妹:@这个名字谁会用 要从小培养解决问题的能力:stuck_out_tongue:
      • 顾泠轩:可以,666666……
        就差个女票了哈哈哈哈哈
        Lol刀妹:@顾泠轩 然后就可以写更多的感人的爱情故事了:smile:
        顾泠轩:@无夜之星辰 有了女票段子也更多了
        Lol刀妹:@顾泠轩 :joy:有了女票就可以慢慢撩了:smile:
      • xyz321的天空:可以
        Lol刀妹:@xyz321的天空 很强势:sunglasses:

      本文标题:iOS开发撩妹篇——心中所爱

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