轻量级 iOS 颜色选择器 EFColorPicker

2018年11月26日09:08:39 发表评论 780 views

EFColorPicker 是一个纯 Swift 的轻量级 iOS 颜色选择器,受 MSColorPicker 启发。

https://github.com/EFPrefix/EFCountingLabel

轻量级 iOS 颜色选择器 EFColorPicker

 

概述

iOS 颜色选择器组件,它能够让用户选择自定义颜色,关键特性如下:

  • 支持 iPhone 和 iPad
  • 自适应的用户界面
  • 支持 RGB 和 HSB 两种颜色模式
  • 比较完善的文档和注释
  • 支持 iOS 8.0 (iPhone & iPad) 及更高版本

预览

轻量级 iOS 颜色选择器 EFColorPicker 轻量级 iOS 颜色选择器 EFColorPicker 轻量级 iOS 颜色选择器 EFColorPicker

示例

  1. 利用 git clone 命令下载本仓库;
  2. 利用 cd 命令切换到 Example 目录下,执行 pod install 命令;
  3. 随后打开 EFColorPicker.xcworkspace 编译即可。

或执行以下命令:

  1. git clone git@github.com:EFPrefix/EFColorPicker.git; cd EFColorPicker/Example; pod install; open EFColorPicker.xcworkspace

环境

  • iOS 8.0+
  • Xcode 10.1+
  • Swift 4.2+
  • CocoaPods 1.6.0.beta.2+

安装

EFColorPicker 可以通过 CocoaPods 进行获取。只需要在你的 Podfile 中添加如下代码就能实现引入:

  1. pod "EFColorPicker"

使用

  1. 首先,需要导入 EFColorPicker 库:
  1. import EFColorPicker
  1. 接下来,可以通过纯代码调用:
  1. let colorSelectionController = EFColorSelectionViewController()
  2. let navCtrl = UINavigationController(rootViewController: colorSelectionController)
  3. navCtrl.navigationBar.backgroundColor = UIColor.white
  4. navCtrl.navigationBar.isTranslucent = false
  5. navCtrl.modalPresentationStyle = UIModalPresentationStyle.popover
  6. navCtrl.popoverPresentationController?.delegate = self
  7. navCtrl.popoverPresentationController?.sourceView = sender
  8. navCtrl.popoverPresentationController?.sourceRect = sender.bounds
  9. navCtrl.preferredContentSize = colorSelectionController.view.systemLayoutSizeFitting(
  10.     UILayoutFittingCompressedSize
  11. )
  12. colorSelectionController.delegate = self
  13. colorSelectionController.color = self.view.backgroundColor ?? UIColor.white
  14. if UIUserInterfaceSizeClass.compact == self.traitCollection.horizontalSizeClass {
  15.     let doneBtn: UIBarButtonItemUIBarButtonItem = UIBarButtonItem(
  16.         title: NSLocalizedString("Done", comment: ""),
  17.         style: UIBarButtonItemStyle.done,
  18.         target: self,
  19.         action: #selector(ef_dismissViewController(sender:))
  20.     )
  21.     colorSelectionController.navigationItem.rightBarButtonItem = doneBtn
  22. }
  23. self.present(navCtrl, animated: true, completion: nil)

也可以通过 Storyboard 调用:

  1. if "showPopover" == segue.identifier {
  2.     guard let destNav: UINavigationController = segue.destination as? UINavigationController else {
  3.         return
  4.     }
  5.     if let size = destNav.visibleViewController?.view.systemLayoutSizeFitting(UILayoutFittingCompressedSize) {
  6.         destNav.preferredContentSize = size
  7.     }
  8.     destNav.popoverPresentationController?.delegate = self
  9.     if let colorSelectionController = destNav.visibleViewController as? EFColorSelectionViewController {
  10.         colorSelectionController.delegate = self
  11.         colorSelectionController.color = self.view.backgroundColor ?? UIColor.white
  12.         if UIUserInterfaceSizeClass.compact == self.traitCollection.horizontalSizeClass {
  13.             let doneBtn: UIBarButtonItemUIBarButtonItem = UIBarButtonItem(
  14.                 title: NSLocalizedString("Done", comment: ""),
  15.                 style: UIBarButtonItemStyle.done,
  16.                 target: self,
  17.                 action: #selector(ef_dismissViewController(sender:))
  18.             )
  19.             colorSelectionController.navigationItem.rightBarButtonItem = doneBtn
  20.         }
  21.     }
  22. }

你可以通过修改 EFColorSelectionViewController 的 isColorTextFieldHidden 属性来控制颜色编辑框的可见性,效果如下:

轻量级 iOS 颜色选择器 EFColorPicker 轻量级 iOS 颜色选择器 EFColorPicker

具体可参考示例程序。

  1. 最后,不要忘记调用的 ViewController 需要继承 EFColorSelectionViewControllerDelegate 来及时获取颜色的变化:
  1. // MARK:- EFColorSelectionViewControllerDelegate
  2. func colorViewController(colorViewCntroller: EFColorSelectionViewController, didChangeColor color: UIColor) {
  3.     self.view.backgroundColor = color
  4.     // TODO: You can do something here when color changed.
  5.     print("New color: " + color.debugDescription)
  6. }

©里维斯社,本站推荐使用的主机:阿里云腾讯云;本站推荐使用的WP主题:WordPress主题

晨会游戏

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: