EFColorPicker - 一个纯 Swift 的轻量级 iOS 颜色选择器

开源项目EyreFree • 于 2017-10-20 23:02:02 +0800 • 130 阅读

EFColorPicker 是一个纯 Swift 的轻量级 iOS 颜色选择器。

English Introduction

链接

https://github.com/EyreFree/EFColorPicker

概述

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

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

预览

iPhone iPad

示例

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

或执行以下命令:

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

环境

  • iOS 8.0+
  • Xcode 9.0+
  • Swift 4.0+

安装

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

pod "EFColorPicker"

使用

  1. 首先,需要导入 EFColorPicker 库:

swift import EFColorPicker

  1. 接下来,可以通过纯代码调用:

```swift let colorSelectionController = EFColorSelectionViewController() let navCtrl = UINavigationController(rootViewController: colorSelectionController) navCtrl.navigationBar.backgroundColor = UIColor.white navCtrl.navigationBar.isTranslucent = false navCtrl.modalPresentationStyle = UIModalPresentationStyle.popover navCtrl.popoverPresentationController?.delegate = self navCtrl.popoverPresentationController?.sourceView = sender navCtrl.popoverPresentationController?.sourceRect = sender.bounds navCtrl.preferredContentSize = colorSelectionController.view.systemLayoutSizeFitting( UILayoutFittingCompressedSize )

colorSelectionController.delegate = self colorSelectionController.color = self.view.backgroundColor ?? UIColor.white

if UIUserInterfaceSizeClass.compact == self.traitCollection.horizontalSizeClass { let doneBtn: UIBarButtonItem = UIBarButtonItem( title: NSLocalizedString("Done", comment: ""), style: UIBarButtonItemStyle.done, target: self, action: #selector(ef_dismissViewController(sender:)) ) colorSelectionController.navigationItem.rightBarButtonItem = doneBtn } self.present(navCtrl, animated: true, completion: nil) ```

也可以通过 Storyboard 调用:

```swift if "showPopover" == segue.identifier { guard let destNav: UINavigationController = segue.destination as? UINavigationController else { return } if let size = destNav.visibleViewController?.view.systemLayoutSizeFitting(UILayoutFittingCompressedSize) { destNav.preferredContentSize = size } destNav.popoverPresentationController?.delegate = self if let colorSelectionController = destNav.visibleViewController as? EFColorSelectionViewController { colorSelectionController.delegate = self colorSelectionController.color = self.view.backgroundColor ?? UIColor.white

    if UIUserInterfaceSizeClass.compact == self.traitCollection.horizontalSizeClass {
        let doneBtn: UIBarButtonItem = UIBarButtonItem(
            title: NSLocalizedString("Done", comment: ""),
            style: UIBarButtonItemStyle.done,
            target: self,
            action: #selector(ef_dismissViewController(sender:))
        )
        colorSelectionController.navigationItem.rightBarButtonItem = doneBtn
    }
}

} ```

你可以通过修改 EFColorSelectionViewControllerisColorTextFieldHidden 属性来控制颜色编辑框的可见性。

具体可参考示例程序。

  1. 最后,不要忘记调用的 ViewController 需要继承 EFColorSelectionViewControllerDelegate 来及时获取颜色的变化:

```swift // MARK:- EFColorSelectionViewControllerDelegate func colorViewController(colorViewCntroller: EFColorSelectionViewController, didChangeColor color: UIColor) { self.view.backgroundColor = color

// TODO: You can do something here when color changed.
print("New color: " + color.debugDescription)

} ```

作者

EyreFree, eyrefree@eyrefree.org

协议

EFQRCode 基于 MIT 协议进行分发和使用,更多信息参见协议文件。

回复: 0
暂无评论~~
  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,见 Emoji cheat sheet
  • @name 会链接到用户页面,并会通知他
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif
Ctrl+Enter