从Contact Swift获取图像

时间:2016-09-25 01:40:17

标签: swift ios10

所需行为

我想知道如何在Swift

中做到以下几点
  
      
  1. 显示联系人选择器窗口
  2.   
  3. 允许用户选择联系人
  4.   
  5. 从该联系人处获取图片。
  6.   

研究

在研究这个问题时,我已经确定,从iOS 9开始,Apple引入了一个新的框架Contacts,用于访问联系人。我还了解到Their documentation描述了使用名为Predicates的系统从联系人中获取信息。但是,我不确定如何实现这一点。

实施

Based primarly on this tutorial,我已经想出了如何展示“联系人选择器”窗口。

import UIKit
import Contacts
import ContactsUI

class ViewController: UIViewController,  CNContactPickerDelegate {


override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
}
@IBAction func contactsPressed(_ sender: AnyObject) {
    let contactPicker = CNContactPickerViewController()
    contactPicker.delegate = self;

    self.present(contactPicker, animated: true, completion: nil)
}

func contactPicker(picker: CNContactPickerViewController, didSelectContactProperty contactProperty: CNContactProperty) {
   //Here is where I am stuck - how do I get the image from the contact?
}

}

提前致谢!!

1 个答案:

答案 0 :(得分:14)

根据Apple的API reference doc,有三个与联系人图片相关的属性:

  

图像属性

     

var imageData:数据?联系人的个人资料图片。

     

var thumbnailImageData:数据?联系人个人资料图片的缩略图版本。

     

var imageDataAvailable:Bool指示联系人是否有个人资料图片。

您可以从CNContactProperty获取CNContact实例,然后访问CNContact类中的imageData

所以你的代码可能如下所示:

func contactPicker(picker: CNContactPickerViewController, didSelectContactProperty contactProperty: CNContactProperty) {
   let contact = contactProperty.contact
   if contact.imageDataAvailable {
      // there is an image for this contact
      let image = UIImage(data: contact.imageData)
      // Do what ever you want with the contact image below
      ...
   }
}
相关问题