多媒体应用-swift
照片选择主要是通过UIImagePickerController控制器实例化一个对象,然后通过self.PresentViewController方法推出界面显示。需要实现代理UIImagePickerControllerDelegate,UINavigationControllerDelegate。
通过isSourceTypeAvailable方法判断设置是否支持照相机、图片库、相册功能。
使用相册功能主要以下一个步骤:
1)判断是否支持要使用的图片库或相机功能;
2)初始化图片控制器对象;
3)指定图片控制器对象的代理;
4)指定图片控制器类型;
5)弹出显示图片控制器;
6)实现图片控制器代理方法。
// MARK: - 选择照片
/*----- 选择照片 ------*/
@IBAction func addImageButtonClick()
{
let actionSheet = UIActionSheet(title: "请选择", delegate: self, cancelButtonTitle: "取消", destructiveButtonTitle: nil, otherButtonTitles: "从相册选","拍照")
actionSheet.showInView(self.view)
}
// MARK: - UIActionSheetDelegate
func actionSheet(actionSheet: UIActionSheet, clickedButtonAtIndex buttonIndex: Int)
{
if buttonIndex != actionSheet.cancelButtonIndex
{
if buttonIndex == //从相册选
{
self.fromAlbum()
}else if buttonIndex == //拍照
{
self.fromPhotograph()
}
}
}
// MARK: - 选取相册
func fromAlbum()
{
//判断设置是否支持图片库
if UIImagePickerController.isSourceTypeAvailable(.PhotoLibrary)
{
//初始化图片控制器
let picker = UIImagePickerController() //设置代理
picker.delegate = self //设置媒体类型
picker.mediaTypes = [kUTTypeImage as String,kUTTypeVideo as String] //设置允许编辑
picker.allowsEditing = true //指定图片控制器类型
picker.sourceType = UIImagePickerControllerSourceType.PhotoLibrary //弹出控制器,显示界面
self.presentViewController(picker, animated: true, completion: { () -> Void in }) }
else
{
let aler = UIAlertView(title: "读取相册错误!", message: nil, delegate: nil, cancelButtonTitle: "确定")
aler.show()
}
}
// MARK: - 拍照
func fromPhotograph()
{
if UIImagePickerController.isSourceTypeAvailable(.Camera)
{
//创建图片控制器
let picker = UIImagePickerController() //设置代理
picker.delegate = self //设置来源
picker.sourceType = UIImagePickerControllerSourceType.Camera //设置镜头
if UIImagePickerController.isCameraDeviceAvailable(UIImagePickerControllerCameraDevice.Front)
{
picker.cameraDevice = UIImagePickerControllerCameraDevice.Front
} //设置闪光灯
picker.cameraFlashMode = UIImagePickerControllerCameraFlashMode.On //允许编辑
picker.allowsEditing = true; //打开相机
self.presentViewController(picker, animated: true, completion: { () -> Void in }) }
else
{
let aler = UIAlertView(title: "找不到相机!", message: nil, delegate: nil, cancelButtonTitle: "确定")
aler.show()
}
}
// MARK: - UIImagePickerControllerDelegate
//选择图片成功之后代理
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
//查看info对象
print(info)
//获取选择的原图
let image = info[UIImagePickerControllerOriginalImage] as! UIImage
//赋值,图片视图显示图片
picView.image = image
//图片控制器退出
picker.dismissViewControllerAnimated(true, completion: { () -> Void in
})
}
//取消图片控制器代理
func imagePickerControllerDidCancel(picker: UIImagePickerController)
{
//图片控制器退出
picker.dismissViewControllerAnimated(true, completion: { () -> Void in
})
}
可以通过引入MobileCoreServices.framework,来设置mediaTypes属性设置媒体的类型。
多媒体应用-swift的更多相关文章
- 关东升的《iOS实战:图形图像、动画和多媒体卷(Swift版)》上市了
关东升的<iOS实战:图形图像.动画和多媒体卷(Swift版)>上市了 承蒙广大读者的厚爱我的<iOS实战:图形图像.动画和多媒体卷(Swift版)>京东上市了,欢迎广大读者提 ...
- iOS开发——UI篇Swift篇&玩转UItableView(一)基本使用
UItableView基本使用 class ListViewController: UIViewController , UITableViewDataSource, UITableViewDeleg ...
- OC 和 swift 小结
1 什么是 OC 语言? OC 语言即面向对象语言,它扩展了 ANSI C 语言,将 SmallTalk 式的消息传递机制加入到 ANSI C 中.它是苹果 OS 和 iOS 以及相关的 API,Co ...
- iOS开发——实用篇Swift篇&项目开发常用实用技术
项目开发常用实用技术 实现拨打电话 要实现打电话功能,最简单最直接的方式便是:直接跳到拨号界面 (注意:这个需要真机调试,模拟器无效果) UIApplication.sharedApplica ...
- Swift - 给游戏添加背景音乐和音效(SpriteKit游戏开发)
游戏少不了背景音乐和音效.下面我们通过创建一个管理音效的类,来实现背景音乐的播放,同时点击屏幕可以播放相应的音效. 声音管理类 SoundManager.swift 1 2 3 4 5 6 7 8 9 ...
- Swift 3 :基于 AVAudioPlayer 的简单音乐播放器
2017.05.22 17:46* 字数 1585 阅读 5095评论 0喜欢 8赞赏 2 https://www.jianshu.com/p/4d5c257428a1 学习ios以来差不多接近两个月 ...
- iOS代码规范(OC和Swift)
下面说下iOS的代码规范问题,如果大家觉得还不错,可以直接用到项目中,有不同意见 可以在下面讨论下. 相信很多人工作中最烦的就是代码不规范,命名不规范,曾经见过一个VC里有3个按钮被命名为button ...
- Swift与C#的基础语法比较
背景: 这两天不小心看了一下Swift的基础语法,感觉既然看了,还是写一下笔记,留个痕迹~ 总体而言,感觉Swift是一种前后端多种语言混合的产物~~~ 做为一名.NET阵营人士,少少多多总喜欢通过对 ...
- iOS开发系列--Swift语言
概述 Swift是苹果2014年推出的全新的编程语言,它继承了C语言.ObjC的特性,且克服了C语言的兼容性问题.Swift发展过程中不仅保留了ObjC很多语法特性,它也借鉴了多种现代化语言的特点,在 ...
随机推荐
- 【HDOJ】3311 Dig The Wells
Steiner Tree.概念就不讲了,引入0号结点.[1, n+m]到0连一条边,权重表示挖井的费用.这样建图spfa求MST即满足所求解. /* 3311 */ #include <iost ...
- Android开发之Fragment的介绍、使用及生命周期
Fragment官网介绍-http://developer.android.com/guide/components/fragments.html 郭大神的使用实例文章:http://blog.csd ...
- hduAnother Graph Game
http://acm.hdu.edu.cn/showproblem.php?pid=4647 很扯的一题 将每条边的一半权值分给它所连的两个结点 #include <iostream> # ...
- BZOJ_1014_[JSOI2008]_火星人prefix_(Splay+LCP_Hash+二分)
描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1014 给出一个字符串,有修改,插入,以及询问LCP(i,j)的操作. 分析 LCP在白书上面有 ...
- apache开源项目--lucence
Lucene 是apache软件基金会一个开放源代码的全文检索引擎工具包,是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎.Lucene的目的是为软件开发人员提供一个简单易用 ...
- RMAN综合学习之备份
rman是最经济实惠的oracle备份工具,在这里做一个rman的整体学习. 文章中大多是rman命令的语法,还是最好做做实验,以便印象深刻,因为大多数数据库的备份就是按时跑脚本,恢复也不是经常能遇到 ...
- 从头开始编写一个Orchard网上商店模块(1) - 介绍
原文地址:http://skywalkersoftwaredevelopment.net/blog/writing-an-orchard-webshop-module-from-scratch-par ...
- .net HTMLParser详细使用说明 强大的Filter类 解析HTML文档如此简单
背景: HTMLParser原本是一个在sourceforge上的一个Java开源项目,使用这个Java类库可以用来线性地或嵌套地解析HTML文本.他的 功能强大和开源等特性吸引了大量Web信息提取的 ...
- BrnShop开源网上商城第二讲:ASP.NET MVC框架
在团队设计BrnShop的web项目之初,我们碰到了两个问题,第一个是数据的复用和传递,第二个是大mvc框架和小mvc框架的选择.下面我依次来说明下. 首先是数据的复用和传递:对于BrnShop的每一 ...
- 一步步写STM32 OS【四】OS基本框架
一.上篇回顾 上一篇文章中,我们完成了两个任务使用PendSV实现了互相切换的功能,下面我们接着其思路往下做.这次我们完成OS基本框架,即实现一个非抢占式(已经调度的进程执行完成,然后根据优先级调度等 ...