项目开发常用实用技术

实现拨打电话 

要实现打电话功能,最简单最直接的方式便是:直接跳到拨号界面

(注意:这个需要真机调试,模拟器无效果)
 
  1 //自动打开拨号页面并自动拨打电话 2 UIApplication.sharedApplication().openURL(NSURL(string :"tel://123456")!) 
 

邮件发送功能的实现

使用MessageUI.framework框架除了可以发送短信,还能发送Email,步骤如下:

(1)首先判断设备是否有发送邮件功能
(2)如果设备允许发送邮件,创建一个MFMailComposeViewController视图控制器,并对其设置邮件标题,正文内容,收件人,附件等。
(3)邮件发送后,会执行回调代理方法,可以获取发送结果(成功,失败或取消)
 
效果图如下:
 
代码如下:
 
复制代码
 1 import UIKit
 2 import MessageUI
 3  
 4 class ViewController: UIViewController ,UINavigationControllerDelegate,  5 MFMailComposeViewControllerDelegate{  6  7 override func viewDidLoad() {  8  super.viewDidLoad()  9 10 //首先要判断设备具不具备发送邮件功能 11 if MFMailComposeViewController.canSendMail(){ 12 let controller = MFMailComposeViewController() 13 //设置代理 14 controller.mailComposeDelegate = self 15 //设置主题 16 controller.setSubject("我是邮件标题") 17 //设置收件人 18 controller.setToRecipients(["a1@hangge.com","a2@hangge.com"]) 19 //设置抄送人 20 controller.setCcRecipients(["b1@hangge.com","b2@hangge.com"]) 21 //设置密送人 22 controller.setBccRecipients(["c1@hangge.com","c2@hangge.com"]) 23 24 //添加图片附件 25 var path = NSBundle.mainBundle().pathForResource("hangge.png", ofType: "") 26 var myData = NSData(contentsOfFile: path!) 27 controller.addAttachmentData(myData, mimeType: "image/png", fileName: "swift.png") 28 29 //设置邮件正文内容(支持html) 30 controller.setMessageBody("我是邮件正文", isHTML: false) 31 32 //打开界面 33 self.presentViewController(controller, animated: true, completion: nil) 34 }else{ 35 println("本设备不能发送邮件") 36  } 37  } 38 39 //发送邮件代理方法 40 func mailComposeController(controller: MFMailComposeViewController!, 41 didFinishWithResult result: MFMailComposeResult, error: NSError!) { 42 controller.dismissViewControllerAnimated(true, completion: nil) 43 44 switch result.value{ 45 case MFMailComposeResultSent.value: 46 println("邮件已发送") 47 case MFMailComposeResultCancelled.value: 48 println("邮件已取消") 49 case MFMailComposeResultSaved.value: 50 println("邮件已保存") 51 case MFMailComposeResultFailed.value: 52 println("邮件发送失败") 53 default: 54 println("邮件没有发送") 55 break 56  } 57  } 58 59 override func didReceiveMemoryWarning() { 60  super.didReceiveMemoryWarning() 61  } 62 }
复制代码

短信发送功能的实现

使用MessageUI.framework框架可以实现短信发送功能,步骤如下:

(1)首先判断设备是否有发送短信功能
(2)如果设备允许发送短信,创建一个MFMessageComposeViewController视图控制器,并对其设置短信内容和收件人号码列表。
(3)短信发送后,会执行回调代理方法,可以获取发送结果(成功,失败或取消)
 
代码如下:
 
复制代码
 1 import UIKit
 2 import MessageUI
 3  
 4 class ViewController: UIViewController ,UINavigationControllerDelegate,  5 MFMessageComposeViewControllerDelegate{  6  7 override func viewDidLoad() {  8  super.viewDidLoad()  9 // Do any additional setup after loading the view, typically from a nib. 10 11 //首先要判断设备具不具备发送短信功能 12 if MFMessageComposeViewController.canSendText(){ 13 let controller = MFMessageComposeViewController() 14 //设置短信内容 15 controller.body = "短信内容:欢迎来到hangge.com" 16 //设置收件人列表 17 controller.recipients = ["123456","120000"] 18 //设置代理 19 controller.messageComposeDelegate = self 20 //打开界面 21 self.presentViewController(controller, animated: true, completion: { () -> Void in 22 23  }) 24 }else{ 25 println("本设备不能发送短信") 26  } 27  } 28 29 //发送短信代理 30 func messageComposeViewController(controller: MFMessageComposeViewController!, 31  didFinishWithResult result: MessageComposeResult) { 32 controller.dismissViewControllerAnimated(true, completion: nil) 33 switch result.value{ 34 case MessageComposeResultSent.value: 35 println("短信已发送") 36 case MessageComposeResultCancelled.value: 37 println("短信取消发送") 38 case MessageComposeResultFailed.value: 39 println("短信发送失败") 40 default: 41 break 42  } 43  } 44 45 override func didReceiveMemoryWarning() { 46  super.didReceiveMemoryWarning() 47  } 48 }
复制代码

 手机摇晃的监测和响应

摇晃手机也是一种常用的交互手段(比如微信摇一摇功能)。iOS SDK中已经将shake事件方便地融合进去了,就像触发touch事件一样简单,发生摇晃事件后程序会自动执行。

 
复制代码
 1 import UIKit
 2  
 3 class ViewController: UIViewController {  4  5 override func viewDidLoad() {  6  super.viewDidLoad()  7  }  8  9 //开始摇晃 10 override func motionBegan(motion: UIEventSubtype, withEvent event: UIEvent) { 11 println("开始摇晃") 12  } 13 14 //摇晃结束 15 override func motionEnded(motion: UIEventSubtype, withEvent event: UIEvent) { 16 println("摇晃结束") 17  } 18 19 //摇晃被意外终止 20 override func motionCancelled(motion: UIEventSubtype, withEvent event: UIEvent) { 21 println("摇晃被意外终止") 22  } 23 }
复制代码

判断设备方向(或监听设备方向的改变)

通过UIDevice.currentDevice()来获取设备,可以取得设备当前的方向。

同时,我们可以添加一个通知来监听设备方向的变化,这样在开发中可以对不同的方向定制不同的排版布局界面。
 
下面通过一个样例,演示如何监测设备方向:
复制代码
 1 import UIKit
 2  
 3 class ViewController: UIViewController {  4  5 @IBOutlet weak var orientationLabel: UILabel!  6  7 override func viewDidLoad() {  8  super.viewDidLoad()  9 10 //感知设备方向 - 开启监听设备方向 11  UIDevice.currentDevice().beginGeneratingDeviceOrientationNotifications() 12 //添加通知,监听设备方向改变 13 NSNotificationCenter.defaultCenter().addObserver(self, selector: "receivedRotation", 14 name: UIDeviceOrientationDidChangeNotification, object: nil) 15 16 //关闭设备监听 17 //UIDevice.currentDevice().endGeneratingDeviceOrientationNotifications() 18  } 19 20 //通知监听触发的方法 21  func receivedRotation(){ 22 var device = UIDevice.currentDevice() 23 switch device.orientation{ 24 case .Portrait: 25 orientationLabel.text = "面向设备保持垂直,Home键位于下部" 26 case .PortraitUpsideDown: 27 orientationLabel.text = "面向设备保持垂直,Home键位于上部" 28 case .LandscapeLeft: 29 orientationLabel.text = "面向设备保持水平,Home键位于左侧" 30 case .LandscapeRight: 31 orientationLabel.text = "面向设备保持水平,Home键位于右侧" 32 case .FaceUp: 33 orientationLabel.text = "设备平放,Home键朝上" 34 case .FaceDown: 35 orientationLabel.text = "设备平放,Home键朝下" 36 case .Unknown: 37 orientationLabel.text = "方向未知" 38 default: 39 orientationLabel.text = "方向未知" 40  } 41  } 42 }
复制代码

 

使用相机拍摄照片

1,打开相机拍照
通过设置图片控制器UIImagePickerController的来源为UIImagePickerControllerSourceType.Camera,便可以打开相机
复制代码
 1 import UIKit
 2  
 3 class ViewController: UIViewController, UIImagePickerControllerDelegate,  4 UINavigationControllerDelegate {  5 override func viewDidLoad() {  6  super.viewDidLoad()  7  }  8 //拍照  9  @IBAction func fromPhotograph(sender: AnyObject) { 10 if UIImagePickerController.isSourceTypeAvailable(.Camera){ 11 //创建图片控制器 12 let picker = UIImagePickerController() 13 //设置代理 14 picker.delegate = self 15 //设置来源 16 picker.sourceType = UIImagePickerControllerSourceType.Camera 17 //允许编辑 18 picker.allowsEditing = true 19 //打开相机 20 self.presentViewController(picker, animated: true, completion: { () -> Void in 21 22  }) 23 }else{ 24 println("找不到相机") 25  } 26  } 27 28 override func didReceiveMemoryWarning() { 29  super.didReceiveMemoryWarning() 30  } 31 }
复制代码

 


2,调用前置,后置摄像头
相机默认使用后置摄像头,可以设置UIImagePickerControllerCameraDevice类型来使用前置摄像头或后置摄像头。
像iTouch设备不具备前置摄像头,我们可以事先判断下是否支持前置。
1 //如果有前置摄像头则调用前置摄像头
2 if UIImagePickerController.isCameraDeviceAvailable(UIImagePickerControllerCameraDevice.Front){ 3 picker.cameraDevice = UIImagePickerControllerCameraDevice.Front 4 }

 


3,设置闪光灯
通过cameraFlashMode属性可以设置闪光灯:开启/关闭/自动
  1 //开启闪光灯 2 picker.cameraFlashMode = UIImagePickerControllerCameraFlashMode.On 
 

 

 系统声音服务的使用(播放声音,提醒,震动)

1,系统声音服务介绍:

系统声音服务提供了一个Api,用于播放不超过30秒的声音。它支持的文件格式有限,具体的说只有CAF、AIF和使用PCM或IMA/ADPCM数据的WAV文件。
但此函数没有提供操作声音和控制音量的功能,因此如果是要为多媒体或游戏创建专门声音,就不要使用系统声音服务。
 
2,系统声音服务支持如下三种类型:
(1)声音:立刻播放一个简单的声音文件。如果手机静音,则用户什么也听不见。
(2)提醒:播放一个声音文件,如果手机设为静音或震动,则通过震动提醒用户。
(3)震动:震动手机,而不考虑其他设置。
 
3,使用样例(首先类中要引入AudioToolbox)
  1 import AudioToolbox 

(1)声音播放

复制代码
 1 @IBAction func systemSound(sender: AnyObject) {
 2     //建立的SystemSoundID对象
 3 var soundID:SystemSoundID = 0  4 //获取声音地址  5 var path = NSBundle.mainBundle().pathForResource("msg", ofType: "wav")  6 //地址转换  7 var baseURL = NSURL(fileURLWithPath: path!)  8 //赋值  9 AudioServicesCreateSystemSoundID(baseURL, &soundID) 10 //播放声音 11  AudioServicesPlaySystemSound(soundID) 12 }
复制代码

 

(2)提醒

复制代码
 1 @IBAction func systemAlert(sender: AnyObject) {
 2     //建立的SystemSoundID对象
 3 var soundID:SystemSoundID = 0  4 //获取声音地址  5 var path = NSBundle.mainBundle().pathForResource("msg", ofType: "wav")  6 //地址转换  7 var baseURL = NSURL(fileURLWithPath: path!)  8 //赋值  9 AudioServicesCreateSystemSoundID(baseURL, &soundID) 10 //提醒(同上面唯一的一个区别) 11  AudioServicesPlayAlertSound(soundID) 12 }
复制代码

 


(3)振动

1 @IBAction func systemVibration(sender: AnyObject) {
2     //建立的SystemSoundID对象
3 var soundID = SystemSoundID(kSystemSoundID_Vibrate) 4 //振动 5  AudioServicesPlaySystemSound(soundID) 6 }

 判端网络连接状态,连接类型(3G还是Wifi)

IJReachability是一个使用Swift写的第三方网络检测类。可以测试网络是否连接,并支持3G和Wifi的检测。

使用样例:

复制代码
 1 import UIKit
 2  
 3 class ViewController: UIViewController {  4  5 @IBOutlet weak var statusLabel: UILabel!  6 @IBOutlet weak var typeLabel: UILabel!  7  8 override func viewDidLoad() {  9  super.viewDidLoad() 10  } 11 12  @IBAction func checkConnect(sender: AnyObject) { 13 //判断连接状态 14 if IJReachability.isConnectedToNetwork(){ 15 statusLabel.text = "网络连接:可用" 16 }else{ 17 statusLabel.text = "网络连接:不可用" 18  } 19 20 //判断连接类型 21 let statusType = IJReachability.isConnectedToNetworkOfType() 22 switch statusType{ 23 case .WWAN: 24 typeLabel.text = "连接类型:移动网络" 25 case .WiFi: 26 typeLabel.text = "连接类型:WiFi" 27 case .NotConnected: 28 typeLabel.text = "连接类型:没有网络连接" 29  } 30  } 31 32 override func didReceiveMemoryWarning() { 33  super.didReceiveMemoryWarning() 34 }
复制代码

转载于:https://www.cnblogs.com/luoxiaoxi/p/5574895.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值