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新建多桌面切换操作【技巧】

