zoukankan      html  css  js  c++  java
  • UIImagePickerController之Block回调

    方法使用:引入头文件 

    #import "UIImagePickerController+Block.h"

    我这拖出来的两个属性

    @property (weak, nonatomic) IBOutlet UIImageView *showImageView;

    - (IBAction)openClick;

    // 实用方法

    - (IBAction)openClick {

        

        UIImagePickerController_Block *imagePickerVC = [UIImagePickerController_Block defaultController];

        

        [imagePickerVC initWith:self SourceType:UIImagePickerControllerSourceTypePhotoLibrary  backBlcok:^(id obj) {

       

             self.showImageView.image = obj;

            

        }];

    }

    UIImagePickerController+Block.h文件如下 

    #import <UIKit/UIKit.h>

     

    typedef void (^CallBackBlcok) (id obj);

     

     

    @interface UIImagePickerController_Block : UIImagePickerController

     

    + (UIImagePickerController_Block *)defaultController;

     

     

    /**

     * @brief 选中照片回调方法.

     *

     * @param controller        当前控制器

     *

     * @param type              相片来源

     *

     * @param callbackblock     回调block,返回选中的image对象

     *

     */

    - (void)initWith:(UIViewController *)controller SourceType:(UIImagePickerControllerSourceType)type backBlcok:(CallBackBlcok)callbackblcok;

     

    UIImagePickerController+Block.m文件如下 

     

    //

    //  UIImagePickerController+Block.m

    //  UIImagePickerController+Block

    //

    //  Created by Apple on 15/9/24.

    //  Copyright © 2015 Zhipin. All rights reserved.

    //

     

    #import "UIImagePickerController+Block.h"

    #import <objc/runtime.h>

     

    static id blockkey;

     

    @interface UIImagePickerController_Block ()<UINavigationControllerDelegate,UIImagePickerControllerDelegate>

     

     

    @end

     

    @implementation UIImagePickerController_Block

     

     

     

    + (UIImagePickerController_Block *)defaultController{

        

        static UIImagePickerController_Block *intance;

        static dispatch_once_t onceToken;

        dispatch_once(&onceToken, ^{

            intance = [[self alloc]init];

        });

        return intance;

    }

     

     

    #pragma mark - ============== 选中照片的回调

    - (void)initWith:(UIViewController *)controller SourceType:(UIImagePickerControllerSourceType)type backBlcok:(CallBackBlcok)callbackblcok{

        

        objc_setAssociatedObject(self, &blockkey, callbackblcok, OBJC_ASSOCIATION_COPY_NONATOMIC);

        

        UIImagePickerController_Block *imageViewController = [UIImagePickerController_Block new];

        // 设置照片来源

        imageViewController.sourceType = type;

        // 设置代理

        imageViewController.delegate   = self;

        [controller  presentViewController:imageViewController animated:YES completion:nil];

    }

    #pragma mark - ============== 选中照片

    - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{

        

        // UIImagePickerControllerOriginalImage 原始图片

        // UIImagePickerControllerEditedImage 编辑后图片

        UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];

        

        CallBackBlcok block = (CallBackBlcok)objc_getAssociatedObject(self, &blockkey);

        if (block) {

            block(image);

        }

        

        [picker dismissViewControllerAnimated:YES completion:NULL];

        

    }

     

     

     

    #pragma mark - ============== 取消相册

    - (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {

        

        [picker dismissViewControllerAnimated:YES completion:NULL];

        

    }

    - (void)viewDidLoad {

        [super viewDidLoad];

        // Do any additional setup after loading the view.

    }

     

     

    @end

     

     

    ==================== 纯手打。。。。。。。。==================

    ==================================================

     

  • 相关阅读:
    逻辑分支
    iOS开发——NSArray中的字符串排序
    iOS开发——实时监控网速(仅作参考,发现一点问题)
    iOS10适配——相机,通讯录,麦克风等权限设置
    iOS10适配——Push Notifications
    iOS开发——获取当前屏幕显示的viewcontroller
    iOS开发——应用图标上显示消息数量
    iOS开发——获取手机当前WiFi名和MAC地址
    我是一个线程(写的太好了,忍不住转过来)
    iOS开发——WAVE音频文件解析
  • 原文地址:https://www.cnblogs.com/XHShare/p/4837001.html
Copyright © 2011-2022 走看看