iOS 網絡--圖片庫本地選取

系統有自帶的圖庫和相機功能,這裏介紹一下如何用代碼打開它們(模擬器是不支持打開相機的)和如何選取本地圖片上傳到圖庫ide

事前準備:工具

#import <AVFoundation/AVFoundation.h>
@interface ViewController ()<UINavigationControllerDelegate,UIImagePickerControllerDelegate>
{
   //設置爲全局變量
    UIImagePickerController*_pc1;
    UIImagePickerController*_pc2;
}

一.UIImagePickerControllerSourceTypePhotoLibrary圖片庫代理

//初始化
    _pc1=[[UIImagePickerController alloc]init];
    //類型  PhotoLibrary--圖庫
    _pc1.sourceType=UIImagePickerControllerSourceTypePhotoLibrary;
    //是否容許編輯
    _pc1.allowsEditing=YES;
    //簽署代理
    _pc1.delegate=self;
    //顯示
    [self presentViewController:_pc1 animated:YES completion:^{
        //顯示完成後執行的代碼
    }];

注意:這時運行代碼是不會進入圖庫的,還須要在info.plist文件中,加入code

Privacy - Photo Library Usage Description圖片

在彈出的窗口中,選擇容許,就能夠進入到圖庫頁面了ip

二.UIImagePickerControllerSourceTypeCamera 相機(模擬器是沒法使用的)it

這裏要增長一段判讀語句,判斷當前相機狀態是否可使用io

//判斷當前是否支持相機
    //Authorization--受權  Status--地位
    //Capture--獲取  Device--工具
    //Restricted--受限制  Denied--拒絕
    AVAuthorizationStatus authStatus=[AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
    if (authStatus==AVAuthorizationStatusRestricted||authStatus==AVAuthorizationStatusDenied ){
        NSLog(@"相機權限受限");
        return;
    }
    //判斷相機是否能夠正常使用
    //Available - 可得到的
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]==NO) {
        NSLog(@"相機沒法使用");
        return;
    }
    _pc2=[[UIImagePickerController alloc]init];
    _pc2.sourceType=UIImagePickerControllerSourceTypeCamera;
    _pc2.delegate=self;
    _pc2.allowsEditing=YES;
    [self presentViewController:_pc2 animated:YES completion:^{
        //顯示後執行的代碼
    }];

三.回調方法圖片上傳

①取消的響應方法import

//點擊了Cancel的響應方法
-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
    //退出當前界面
    [_pk dismissViewControllerAnimated:YES completion:^{
        
    }];
}

②圖片回調的方法,能夠用來本地上傳到圖片庫

//選擇圖片回調
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info
{
    //info是一個字典,儲存的是編輯後的圖片和原圖
    //UIImagePickerControllerEditedImage - 編輯後的圖片
    //UIImagePickerControllerOriginalImage - 原圖  
    UIImage *image = info[@"UIImagePickerControllerEditedImage"];
       //保存到圖庫    
    UIImageWriteToSavedPhotosAlbum(image, self, @selector(), nil);    
    [_pk dismissViewControllerAnimated:YES completion:^{
        
    }];
}
相關文章
相關標籤/搜索