IOS打开照相机与本地相册选择图片实例详解

发布时间 - 2026-01-11 01:58:27    点击率:

IOS打开照相机与本地相册选择图片

最近正好项目里面要集成“打开照相机与本地相册选择图片”的功能,今天就在这边给大家写一个演示程序;打开相机拍摄后或者在相册中选择一张照片,然后将它显示在界面上。好了废话不多说,因为比较简单直接上源码。

首先,我们在头文件中添加需要用到的actionSheet控件,显示图片的UIImageView控件,并且加上所需要的协议

#import <UIKit/UIKit.h> 
 
@interface ImagePickerViewController : UIViewController<UIImagePickerControllerDelegate,UIActionSheetDelegate,UINavigationControllerDelegate> 
 
@property (strong, nonatomic) IBOutlet UIImageView *headImage; 
 
@property (strong, nonatomic) UIActionSheet *actionSheet; 
 
- (IBAction)clickPickImage:(id)sender; 
@end 

通过点击我设置在界面中的按钮来呼出actionSheet控件,来选择相应的操作拍照或是在相册中选择相片,代码如下:

// 
// ImagePickerViewController.m 
// testAuto 
// 
// Created by silicon on 15/5/9. 
// Copyright (c) 2015年 silicon. All rights reserved. 
// 
 
#import "ImagePickerViewController.h" 
 
@interface ImagePickerViewController () 
 
@end 
 
@implementation ImagePickerViewController 
 
@synthesize actionSheet = _actionSheet; 
 
- (void)viewDidLoad { 
  [super viewDidLoad]; 
  // Do any additional setup after loading the view from its nib. 
   
} 
 
- (void)didReceiveMemoryWarning { 
  [super didReceiveMemoryWarning]; 
  // Dispose of any resources that can be recreated. 
} 
 
 
/** 
 @ 调用ActionSheet 
 */ 
- (void)callActionSheetFunc{ 
  if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]){ 
    self.actionSheet = [[UIActionSheet alloc] initWithTitle:@"选择图像" delegate:self cancelButtonTitle:@"取消" destructiveButtonTitle:nil otherButtonTitles:@"拍照", @"从相册选择", nil nil]; 
  }else{ 
    self.actionSheet = [[UIActionSheet alloc] initWithTitle:@"选择图像" delegate:self cancelButtonTitle:@"取消"destructiveButtonTitle:nil otherButtonTitles:@"从相册选择", nil nil]; 
  } 
   
  self.actionSheet.tag = 1000; 
  [self.actionSheet showInView:self.view]; 
} 
 
// Called when a button is clicked. The view will be automatically dismissed after this call returns 
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{ 
  if (actionSheet.tag == 1000) { 
    NSUInteger sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 
    // 判断是否支持相机 
    if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) { 
      switch (buttonIndex) { 
        case 0: 
          //来源:相机 
          sourceType = UIImagePickerControllerSourceTypeCamera; 
          break; 
        case 1: 
          //来源:相册 
          sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 
          break; 
        case 2: 
          return; 
      } 
    } 
    else { 
      if (buttonIndex == 2) { 
        return; 
      } else { 
        sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum; 
      } 
    } 
    // 跳转到相机或相册页面 
    UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init]; 
    imagePickerController.delegate = self; 
    imagePickerController.allowsEditing = YES; 
    imagePickerController.sourceType = sourceType; 
     
    [self presentViewController:imagePickerController animated:YES completion:^{ 
     
    }]; 
  } 
} 
 
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
  [picker dismissViewControllerAnimated:YES completion:^{ 
   
  }]; 
   
  UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage]; 
  self.headImage.image = image; 
} 
 
/* 
#pragma mark - Navigation 
 
// In a storyboard-based application, you will often want to do a little preparation before navigation 
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
  // Get the new view controller using [segue destinationViewController]. 
  // Pass the selected object to the new view controller. 
} 
*/ 
 
- (IBAction)clickPickImage:(id)sender { 
   
  [self callActionSheetFunc]; 
} 
@end 

代码比较简单,也容易理解,运行的效果如下:

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# IOS打开照相机与本地相册选择图片  # IOS照相机  # iOS 10自定义相机功能  # iOS开发技巧之自定义相机  # iOS自定义相机实现拍照、录制视频  # iOS框架AVFoundation实现相机拍照、录制视频  # iOS仿微信相机拍照、视频录制功能  # iOS开发-自定义相机实例(仿微信)  # iOS开发-调用系统相机和相册获取照片示例  # IOS10 相册相机闪退bug解决办法  # IOS打开系统相机的闪光灯  # iOS自定义相机功能  # 是在  # 好了  # 就在  # 希望能  # 给大家  # 将它  # 谢谢大家  # 多说  # 所需要  # 呼出  # 跳转到  # 一张照片  # 判断是否  # 头文件  # reserved  # rights  # _actionSheet  # synthesize  # implementation  # Copyright 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 免费网站制作appp,免费制作app哪个平台好?  Java遍历集合的三种方式  个人摄影网站制作流程,摄影爱好者都去什么网站?  打造顶配客厅影院,这份100寸电视推荐名单请查收  Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】  如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】  Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)  Python文本处理实践_日志清洗解析【指导】  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  如何挑选高效建站主机与优质域名?  Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧  如何快速使用云服务器搭建个人网站?  如何快速选择适合个人网站的云服务器配置?  Laravel如何实现本地化和多语言支持_Laravel多语言配置与翻译文件管理  如何安全更换建站之星模板并保留数据?  Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作  Laravel如何自定义分页视图?(Pagination示例)  Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理  Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】  Laravel如何与Inertia.js和Vue/React构建现代单页应用  Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧  Laravel如何使用Livewire构建动态组件?(入门代码)  Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率  JavaScript如何操作视频_媒体API怎么控制播放  Laravel怎么处理异常_Laravel自定义异常处理与错误页面教程  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  移动端脚本框架Hammer.js  使用spring连接及操作mongodb3.0实例  Python面向对象测试方法_mock解析【教程】  Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控  EditPlus 正则表达式 实战(3)  如何在香港免费服务器上快速搭建网站?  如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  如何登录建站主机?访问步骤全解析  Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】  作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】  大同网页,大同瑞慈医院官网?  专业商城网站制作公司有哪些,pi商城官网是哪个?  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  如何在宝塔面板中修改默认建站目录?  如何在IIS中新建站点并解决端口绑定冲突?  使用PHP下载CSS文件中的所有图片【几行代码即可实现】  Laravel怎么连接多个数据库_Laravel多数据库连接配置  Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性  微信小程序 canvas开发实例及注意事项  如何用5美元大硬盘VPS安全高效搭建个人网站?  高防服务器租用如何选择配置与防御等级?  MySQL查询结果复制到新表的方法(更新、插入)  Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】