非定制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

一些小细节:

实现两个代理方法:

时间: 2024-12-02 04:55:17

非定制UIImagePickerController的使用的相关文章

3G定制手机别欺上瞒下

目前,中国三大运营商中,除了联通不缺WCDMA明星手机,中国电信.中国移动都缺明星机,而明星机是吸引高端3G用户,提升ARPU的决定性因素.电信和移动纷纷拿出非常优惠的政策吸引手机厂商开发EVDO双模和OMS明星机,高补贴.低门槛吸引了一大批本土手机企业参与定制. 部分企业做定制机喜欢欺上瞒下 有人说,高端手机用户都不差钱,而且买定制机以及话费都能报销,不用自己掏腰包,所以高端定制机尽量的要卖高价,至于性能只是其次.高补贴.低门槛,再加上对高端定制机潜在用户群的消费习惯判断,导致现在EVDO双模

联通无线上网卡打假幕后:定制产品售价高出3成

每经记者 齐文婷 发自深圳 针对假冒联通定制上网卡愈演愈烈的情况,中国联通(600050,SH)近日高调公布16款"定制"无线上网卡,并推广认证打假活动,鼓励用户进行正品网上验证. 然而,<每日经济新闻>记者调查发现,同品牌同型号的产品,经过联通"定制"并在联通渠道销售,价格比市面上高出不少. 非定制产品被"打假" 无线上网卡是一种硬件终端,它可以使用户在无线电话信号覆盖范围内,利用手机SIM卡登录互联网,主要用于上网本等移动终端.

魅族拒绝中国移动定制机利润与市场的抉择

文/刘佳眼下让魅族矛盾的问题在于:如果加入中国移动渠道,意味着利润和产能都难以保证:但如果拒绝,在智能手机的竞争红海中,魅族很可能将失去不小的市场份额为中国移动TD定制手机准备许久的魅族,在产品发布前夜艰难说"不"."中国移动定制机要求太苛刻, 预装一堆'垃圾'应用不说,还要去掉或改变Flyme(魅族定制操作系统)很多原有的特色和人性化设计."魅族创始人黄章在魅族论坛上发帖称,魅族不能助长和妥协"恶势力",谈不了就不做,或者放弃发售已经做好的TD

细致的Microsoft、轻巧的Apple和简洁的Google

细致的Microsoft 减少概念--增强信心: 你是不是引入了新的概念?为什么?真的必要吗? 你能去掉这些不需要的概念吗? 其中的区别有意义吗? 用户体验会延续同样的概念吗? 小的好或坏也很重要: 哪些重要的"小事"是经常会碰到的? 哪些小问题是你在着手解决的? 少做一些更好. 不要把小事从你的体验中去除. 为深思熟虑的细节制订计划. 修正小的错误. 看起来和用起来都很棒: 你的用户体验哪里最棒?它看起来有那么好吗? 用户第一眼看到的东西能够让人觉得它用户体验很棒吗? 用户体验符合期

使用NetKerne实现REST风格的ESB

背景 新英格兰大学启动了一个为期多年的基础建设现代化项目,这个项目的目的在于逐步取代已经过时的系统,并在尽量实现所有IT投资的回报最大化的同时提供尽可能多的IT功能项.这个项目牵涉到硬件升级.购买新软件.开发培训和操作团队的培训等等.这个现代化的战略性项目的中心在于实现一个面向服务架构(Service Oriented Architecture-SOA). SOA是着重于分布式应用设计的总体平台架构方式,而非注重于特定技术.SOA的关键的在于软件服务的定义和实现,不管服务的位置如何.所有权归谁,

Android 经典笔记七 全局弹窗Dialog

目录介绍 1.全局弹窗分析 2.全局弹窗必要条件 3.全局弹窗实现方式 3.1. 利用系统弹出dialog 3.2. 获取WindowManager,直接添加view 3.3. 在服务里,获取栈顶的Activity,弹窗 4.Dialog实现全局Loading加载框 4.1. 自定义Loading类 4.2. 给自定义的Dialog添加自定义属性 4.3. Loading布局 4.4. 开始使用 5.遇到的问题 5.1. 权限问题 5.2. Unable to add window 6.其他说明

选择公有云还是私有云?

如今的社会,分工越来越细,如何运维和适用IT服务的选择变得更为多样化对于企业来说是不得不选的.而对于一般企业来说同样还有一个问题是困扰他们的,那就是选择自己构建还是采用第三方服务. 对于一般企业来说,最终需要的是能够帮助和促进服务的应用,而不是底层IT基础设施.但是IT基础设施是支撑这些应用的基础,因此企业必须两者兼顾.在传统方式下,对于应用来说企业可以选择市场上比如许多企业采用了市场上的ERP和CRM等套装软件.另外,如果企业的需求相对特殊,或者出于其他考虑企业还可以根据需要选择自己开发应用程

北亚案例研究:hp MSA50 5盘RAID5重建为4盘RAID5

[用户单位] XX省电视台 [数据恢复故障描述] 一台HP 服务器,挂接一台HP MSA50磁盘阵列,内接5块1TB硬盘,原先结构为RAID5. 使用一段时间后,其中一块硬盘掉线,因RAID5支持一块硬盘出错的冗余保护,所以数据并无出错.接着运行很短时间后服务器出现故障,遂找人维修,维修人员未完全了解情况,将剩下的4块硬盘重新创建了一组全新的RAID5并完全同步完成,导致原来数据全部丢失. 已经有几家数据恢复公司处理过,无法恢复. [数据恢复故障分析] HP SMART ARRAY在创建一组新的

购买本地管理WLAN时 你需要考虑这四个因素

在本文中,网络专家Andrew Froehlich介绍了在选购内部部署本地管理的WLAN设备时需要考虑的四个标准.这个系列文章评估了管理内部部署WLAN与云端管理WLAN相比的优势,并探讨了在选购WLAN时的关键标准. 在为你的企业选购合适的本地管理WLAN产品平台时,你需要考虑四个主要因素.首先是WLAN性能,其中包括无线吞吐速度.容量.通过WLAN时一致的信号,以及在组件故障的情况下自修复的选项.其次是安全选项,以确保最终设备和用户正确验证和访问联网资源.第三是从物理和逻辑设计的角度考虑最满