KNContactsPicker
一个现代化、高度可自定义的联系人选择器,具有多选选项,行为与 ContactsUI 的 CNContactPickerViewController 非常相似。
预览
![]() |
![]() |
![]() |
---|---|---|
单选取消 | 单选重新选择 | 多选 |
安装
CocoaPods
将以下内容添加到 podfile 以获取最新版本
pod 'KNContactsPicker'
或指定所需版本
pod 'KNContactsPicker', '~> 0.1'
手动安装
下载并将 KNContactsPicker
文件夹和文件包含在您的代码库中。
需求
- iOS 12+
- Swift 5
功能
KNContactsPicker 是一个现代、可定制的联系人选择器,类似于原生的 CNContactPickerViewController。它在某些方面进行了改进,以获得更好的用户体验。
- 三种联系人选择模式
- 单选不选(在选择第一个联系人后取消选择其他所有联系人)
- 单选重新选择(当点击时选择另一个联系人)
- 多选
- 联系人图片或首字母缩略图
- 搜索联系人和搜索时选择的能力
- 清除选择按钮
- 联系人部分索引,以快速浏览联系人列表
- 返回 CNContact 对象
- 高度可定制的字符串和选项设置
- 两个条件方法,用于启用或取消选择特定联系人
- 支持 iOS 13
- 深色模式
- 图标(SF Symbols)
- 下拉消失
即将推出
- 名称下的额外联系人信息
- 联系人排序顺序
- 联系人显示顺序
- 更模块化的联系人属性方法
请确保您的应用程序(宿主应用程序)已在您的 Info.plist
中提供了 隐私 - 联系人使用描述
。还建议您检查联系人授权是否已授予。
如何使用
实现代理方法
// This is in your application
extension ViewController: KNContactPickingDelegate {
func contactPicker(didFailPicking error: Error) {
print(error)
}
func contactPicker(didCancel error: Error) {
print(error)
}
func contactPicker(didSelect contact: CNContact) {
self.contacts.append(contact)
self.contactsTableView.reloadData()
}
func contactPicker(didSelect contacts: [CNContact]) {
self.contacts.append(contentsOf: contacts)
self.contactsTableView.reloadData()
}
}
自定义设置
var settings = KNPickerSettings()
settings.pickerTitle = "Pick"
settings.conditionToDisplayContact = { contact in
return contact.organizationName == "Apple"
}
settings.conditionToDisableContact = { contact in
return self.contacts.contains(contact)
}
初始化并显示 KNContactsPicker
let controller = KNContactsPicker(delegate: self, settings: settings)
self.navigationController?.present(controller, animated: true, completion: nil)
建议
您可以使用 KNContactsPicker 与 KNContacts 框架相结合使用。