非定制UIImagePickerController的使用

简介:

非定制UIImagePickerController的使用

效果:

源码:

//
//  ViewController.m
//  ImagePic
//
//  Created by XianMingYou on 15/3/26.
//  Copyright (c) 2015年 XianMingYou. All rights reserved.
//

#import "ViewController.h"

typedef enum : NSUInteger {
    TAKE_IMAGE,
    TAKE_PHOTO,
} EChooseFlag;

@interface ViewController ()<UIActionSheetDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate>
@property (nonatomic, strong) UIButton    *button;
@property (nonatomic, strong) UIImageView *showImageView;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    [self.view addSubview:self.showImageView];
    [self.view addSubview:self.button];
}

// 照片
@synthesize showImageView = _showImageView;
- (UIImageView *)showImageView {
    if (_showImageView == nil) {
        _showImageView                     = [[UIImageView alloc] initWithFrame:self.view.bounds];
        _showImageView.layer.masksToBounds = YES;
        _showImageView.contentMode         = UIViewContentModeScaleAspectFill;
    }
    
    return _showImageView;
}

// 按钮
@synthesize button = _button;
- (UIButton *)button {
    if (_button == nil) {
        
        CGRect  rect   = self.view.bounds;
        CGFloat height = rect.size.height;
        CGFloat width  = rect.size.width;
        
        _button = [[UIButton alloc] initWithFrame:CGRectMake(0, height - 60, width, 60)];
        [_button addTarget:self action:@selector(buttonEvent:) forControlEvents:UIControlEventTouchUpInside];
        [_button setTitle:@"Take" forState:UIControlStateNormal];
        [_button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
        _button.backgroundColor = [UIColor blackColor];
    }
    
    return _button;
}

- (void)buttonEvent:(id)sender {
    [self initActionSheet];
}

// ActionSheet
- (void)initActionSheet {
    UIActionSheet *pickerActionSheet = \
    [[UIActionSheet alloc] initWithTitle:@"选择"
                                delegate:self
                       cancelButtonTitle:@"取消"
                  destructiveButtonTitle:nil
                       otherButtonTitles:@"获取系统相册", @"拍照", nil];
    [pickerActionSheet showInView:self.view];
}
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
    if (buttonIndex == TAKE_IMAGE) {
        [self takeImage];
    } else if (buttonIndex == TAKE_PHOTO) {
        [self takePhoto];
    } else {

    }
}

// 获取图片控制器
- (void)takeImage {
    UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
    imagePicker.view.backgroundColor     = [UIColor whiteColor];
    imagePicker.delegate                 = self;
    imagePicker.sourceType               = UIImagePickerControllerSourceTypePhotoLibrary;

    /*
        UIImagePickerControllerSourceTypePhotoLibrary       文件夹管理形式
        UIImagePickerControllerSourceTypeSavedPhotosAlbum   显示所有文件形式
    */
    
    [self presentController:imagePicker];
}

// 获取图片控制器
- (void)takePhoto {
    UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
    imagePicker.view.backgroundColor     = [UIColor whiteColor];
    imagePicker.delegate                 = self;
    imagePicker.sourceType               = UIImagePickerControllerSourceTypeCamera;
    
    [self presentController:imagePicker];
}


// 图片控制器代理
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    UIImage *image = info[UIImagePickerControllerOriginalImage];
    if (image) {
        self.showImageView.image = image;
        [self dismissController:picker];
    }
}
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
    [self dismissController:picker];
}



- (void)dismissController:(UIViewController *)controller {
    [controller dismissViewControllerAnimated:YES completion:^{}];
}
- (void)presentController:(UIViewController *)controller {
    [self presentViewController:controller animated:YES completion:^{}];
}



@end

一些小细节:

实现两个代理方法:

目录
相关文章
|
6月前
|
iOS开发 UED 容器
navigationController 的使用详解
navigationController 的使用详解
|
开发者 iOS开发
UIDatePicker的详细讲解
UIDatePicker的详细讲解
440 0
 UIDatePicker的详细讲解
UINavigationController和UITabBarController合用。
UINavigationController和UITabBarController合用。
76 0
UIActionSheet,UIAlertView,UIAlertController的详细说明
UIActionSheet,UIAlertView,UIAlertController的详细说明
124 0
UIActionSheet,UIAlertView,UIAlertController的详细说明
|
数据安全/隐私保护
|
数据安全/隐私保护 iOS开发