所需行为
我想知道如何在Swift
中做到以下几点
- 显示联系人选择器窗口
- 允许用户选择联系人
- 从该联系人处获取图片。
醇>
研究
在研究这个问题时,我已经确定,从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?
}
}
提前致谢!!
答案 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
...
}
}