KNContactsPicker 0.3.0

KNContactsPicker 0.3.0

dragosrobertn 维护。



KNContactsPicker

CocoaPods codebeat badge contributions

一个现代化、高度可自定义的联系人选择器,具有多选选项,行为与 ContactsUI 的 CNContactPickerViewController 非常相似。

预览

Single Deselect Mode Single Reselect Mode Multiple Select Mode
单选取消 单选重新选择 多选

安装

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 框架相结合使用。