• ios中关于UIImagePickerController的一些知识总结


    记得添加MobileCoreServices.framework

    及导入#import <MobileCoreServices/MobileCoreServices.h>

      1 @interface PPViewController ()<UIActionSheetDelegate,UINavigationControllerDelegate, UIImagePickerControllerDelegate>
      2 
      3 {
      4 
      5     UIImagePickerController *_pickerController;
      6 
      7 }
      8 
      9 @property (weak, nonatomic) IBOutlet UIImageView *imageView;
     10 
     11  
     12 
     13 @end
     14 
     15  
     16 
     17 @implementation PPViewController
     18 
     19  
     20 
     21 - (void)viewDidLoad
     22 
     23 {
     24 
     25     [super viewDidLoad];
     26 
     27     _pickerController = [[UIImagePickerController alloc] init];
     28 
     29     _pickerController.delegate = self;//设置代理
     30 
     31     _pickerController.allowsEditing = YES;//图片可编辑(放大缩小)
     32 
     33 }
     34 
     35 - (IBAction)choseImage:(id)sender
     36 
     37 {
     38 
     39     // 判断是否有相机
     40 
     41     if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
     42 
     43     {
     44 
     45         
     46 
     47         //判断是否能摄像
     48 
     49         if ([[UIImagePickerController availableMediaTypesForSourceType:_pickerController.sourceType] containsObject:(NSString *)kUTTypeMovie])
     50 
     51         {
     52 
     53             _pickerController.mediaTypes = [NSArray arrayWithObject:(NSString *)kUTTypeMovie];
     54 
     55             UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"cancel" destructiveButtonTitle:nil otherButtonTitles:@"相册",@"相机",@"摄像机", nil];
     56 
     57             sheet.tag = 2;
     58 
     59             [sheet showInView:self.view];
     60 
     61         }
     62 
     63         else
     64 
     65         {
     66 
     67             UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"cancel" destructiveButtonTitle:nil otherButtonTitles:@"相机",@"相册", nil];
     68 
     69             sheet.tag = 1;
     70 
     71             [sheet showInView:self.view];
     72 
     73         }
     74 
     75     }
     76 
     77     
     78 
     79     else
     80 
     81     {//模拟器
     82 
     83         UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"cancel" destructiveButtonTitle:nil otherButtonTitles:@"相册", nil];
     84 
     85         sheet.tag = 3;
     86 
     87         [sheet showInView:self.view];
     88 
     89     }
     90 
     91  
     92 
     93 }
     94 
     95 #pragma mark- UIActionSheet的代理方法
     96 
     97 - (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
     98 
     99 {
    100 
    101     if (actionSheet.tag == 1)
    102 
    103     {
    104 
    105         switch (buttonIndex)
    106 
    107         {
    108 
    109             case 0:
    110 
    111             {
    112 
    113                 _pickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
    114 
    115                 _pickerController.mediaTypes = [NSArray arrayWithObject:(NSString *)kUTTypeImage];
    116 
    117                 [self presentViewController:_pickerController animated:YES completion:nil];
    118 
    119             }
    120 
    121                 break;
    122 
    123             case 1:
    124 
    125             {
    126 
    127                 _pickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
    128 
    129                 _pickerController.mediaTypes = [NSArray arrayWithObject:(NSString *)kUTTypeImage];
    130 
    131                 [self presentViewController:_pickerController animated:YES completion:nil];
    132 
    133             }
    134 
    135                 break;
    136 
    137                 
    138 
    139             default:
    140 
    141                 break;
    142 
    143         }
    144 
    145  
    146 
    147     }
    148 
    149     if (actionSheet.tag == 2)
    150 
    151     {
    152 
    153         switch (buttonIndex)
    154 
    155         {
    156 
    157             case 0:
    158 
    159             {
    160 
    161                 _pickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
    162 
    163                 _pickerController.mediaTypes = [NSArray arrayWithObject:(NSString *)kUTTypeImage];
    164 
    165                 [self presentViewController:_pickerController animated:YES completion:nil];
    166 
    167             }
    168 
    169                 break;
    170 
    171             case 1:
    172 
    173             {
    174 
    175                 _pickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
    176 
    177 //                _pickerController.mediaTypes = [NSArray arrayWithObject:(NSString *)kUTTypeImage];
    178 
    179                 [self presentViewController:_pickerController animated:YES completion:nil];
    180 
    181             }
    182 
    183                 break;
    184 
    185             case 2:
    186 
    187             {
    188 
    189                 _pickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
    190 
    191                 //        pickController.videoQuality = UIImagePickerControllerQualityTypeLow;//可以选择图片质量
    192 
    193                 _pickerController.mediaTypes = [NSArray arrayWithObject:(NSString *)kUTTypeMovie];
    194 
    195                 [self presentViewController:_pickerController animated:YES completion:nil];
    196 
    197             }
    198 
    199             default:
    200 
    201                 break;
    202 
    203         }
    204 
    205     }
    206 
    207     if (actionSheet.tag == 3)
    208 
    209     {
    210 
    211         if (buttonIndex == 0)
    212 
    213         {
    214 
    215             _pickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
    216 
    217 //            _pickerController.mediaTypes = [NSArray arrayWithObject:(NSString *)kUTTypeImage];
    218 
    219             [self presentViewController:_pickerController animated:YES completion:nil];
    220 
    221         }
    222 
    223  
    224 
    225     }
    226 
    227 }
    228 
    229  
    230 
    231 - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
    232 
    233 {
    234 
    235     NSLog(@"========%@",info);//返回的值都在info里面
    236 
    237     if ([[info objectForKey:UIImagePickerControllerMediaType] isEqualToString:(NSString *)kUTTypeMovie])
    238 
    239     {
    240 
    241         _imageView.image = [UIImage imageWithData:[NSData dataWithContentsOfFile:(NSString *)[[info objectForKey:UIImagePickerControllerMediaURL] path]]];
    242 
    243     }
    244 
    245     else
    246 
    247     {
    248 
    249         _imageView.image = [info objectForKey:@"UIImagePickerControllerEditedImage"];
    250 
    251     }
    252 
    253     [self dismissViewControllerAnimated:YES completion:nil];
    254 
    255     
    256 
    257 }
    258 
    259 //如果这是一个modalViewController,需要dismiss 它发了个cancel消息,必须关闭它
    260 
    261 - (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
    262 
    263 {
    264 
    265     [self dismissViewControllerAnimated:YES completion:nil];
    266 
    267 }
    268 
    269 /**
    270 
    271  *  {
    272 
    273  UIImagePickerControllerMediaType = "public.image";
    274 
    275  UIImagePickerControllerOriginalImage = "<UIImage: 0x7fe3a3dc2a20> size {1500, 1001} orientation 0 scale 1.000000";
    276 
    277  UIImagePickerControllerReferenceURL = "assets-library://asset/asset.JPG?id=B6C0A21C-07C3-493D-8B44-3BA4C9981C25&ext=JPG";
    278 
    279  }
    280 
    281  */
    282 
    283 /**
    284 
    285  *  {
    286 
    287  UIImagePickerControllerCropRect = "NSRect: {{0, 0}, {1500, 1003}}";
    288 
    289  UIImagePickerControllerEditedImage = "<UIImage: 0x7fec5c8145b0> size {638, 426} orientation 0 scale 1.000000";
    290 
    291  UIImagePickerControllerMediaType = "public.image";
    292 
    293  UIImagePickerControllerOriginalImage = "<UIImage: 0x7fec5c80d4c0> size {1500, 1001} orientation 0 scale 1.000000";
    294 
    295  UIImagePickerControllerReferenceURL = "assets-library://asset/asset.JPG?id=B6C0A21C-07C3-493D-8B44-3BA4C9981C25&ext=JPG";
    296 
    297  }
    298 
    299  */
  • 相关阅读:
    android的窗口创建过程
    android的Binder
    Android Intent.FLAG_NEW_TASK详解,包括其他的标记的一些解释
    android的事件分发测试结果
    Don't Store Data in the Application Object
    关于算法
    自定义控件其实很简单3/4
    自定义控件其实很简单2/3
    建设一个能承受500万PV/每天的网站
    strust2里面package的元素排列顺序
  • 原文地址:https://www.cnblogs.com/dlwj/p/4886568.html
Copyright © 2020-2023  润新知