iOS(Swift)でチェックボックス[YSCheckBox]

iOSアプリを開発していてブラウザ標準のようなチェックボックスを使いたいと思ったことはありませんか？そんな時のためにシンプルなデザインのswift製チェックボックスライブラリを作成しました。各種プロパティを設定することでデザインもある程度自由に変更することができます。

![checkbox1.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492697/a5c71fb1-1844-79bc-41c3-183054e1d1ee.gif)![checkbox2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492697/1a1ebca9-a686-f33e-e56f-7b9748ea96ad.gif)![checkbox3.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492697/77be9281-f8ab-9278-981d-7db06474fb20.gif)

[GitHubはこちら](https://github.com/sekies/YSCheckBox)

CocoaPodsでインストールできるのでとても簡単です。それでは早速インストールの手順を説明します。

# Installation
### CocoaPods

Podfileに 

```:Podfile
use_frameworks!

pod 'YSCheckBox', :git => 'https://github.com/sekies/YSCheckBox.git'
```
と追加します。
pod install します。


# Usage
YSCheckBoxをインポートします。

 ```Swift:ViewController.swift
 import YSCheckBox
 ```
任意のUIViewContorollerで`YSCheckBoxViewControllerDelegate` プロトコルに準拠します。

 ```Swift:ViewController.swift
 class ViewController: UIViewController,YSCheckBoxViewControllerDelegate {
 ```
`YSCheckBoxViewController`インスタンスを生成します。生成時にチェックボックスのラベルを配列で指定します。  

  ```Swift:ViewController.swift
  let checkBox = YSCheckBoxViewController(labels: ["Orange","GrapeFruits","Banana"])
  ```
delegateと各種デザインプロパティを設定します。必須となるのはdelegateのみです。

  ```Swift:ViewController.swift
checkBox.delegate = self
checkBox.font = UIFont.systemFont(ofSize: 18)
checkBox.labelColor = UIColor(red: 0, green: 122 / 255, blue: 1, alpha: 1)
checkBox.labelMargin = 0
checkBox.lineWidth = 1
checkBox.checkBoxSelectedFillSize = 1
checkBox.checkBoxMargin = 6
checkBox.checkBoxCorner = 7
checkBox.checkBoxStroke = .lightGray
checkBox.checkBoxCheckStroke = .white
checkBox.checkBoxSelectedFill = UIColor(red: 0, green: 122 / 255, blue: 1, alpha: 1)
checkBox.checkBoxBGFill = UIColor(red: 0.95, green: 0.95, blue: 0.95, alpha: 1)
  ```
親UIViewControllerに生成したYSCheckBoxViewControllerをaddChildしコンテナとなるUIViewにYSCheckBoxViewControllerのviewをaddSubviewします。チェックボックスの位置はコンテナとなるUIViewに依存します。

  ```Swift:ViewController.swift
addChild(checkBox)
checkBox.view.frame = container.bounds
container.addSubview(checkBox.view)
checkBox.didMove(toParent: self)
  ```
デリゲートメソッドを実装します。チェックボックスを選択するとこのメソッドが呼ばれます。YSCheckBoxViewController生成時に追加した配列の順にBoolが割り振られます。

  ```Swift:ViewController.swift
  func didYSCeckBoxSelect(checks: [Bool]) {
      print(checks)
  }
  ```
コードの全体像です。

  ```Swift:ViewController.swift
import UIKit
import YSCheckBox

class ViewController: UIViewController, YSCheckBoxViewControllerDelegate {

    @IBOutlet weak var container: UIView!

    override func viewDidLoad() {
        super.viewDidLoad()
        let checkBox = YSCheckBoxViewController(labels: ["Orange","GrapeFruits","Banana"])
        checkBox.delegate = self
        checkBox.font = UIFont.systemFont(ofSize: 18)
        checkBox.labelColor = UIColor(red: 0, green: 122 / 255, blue: 1, alpha: 1)
        checkBox.labelMargin = 0
        checkBox.lineWidth = 1
        checkBox.checkBoxSelectedFillSize = 1
        checkBox.checkBoxMargin = 6
        checkBox.checkBoxCorner = 7
        checkBox.checkBoxStroke = .lightGray
        checkBox.checkBoxCheckStroke = .white
        checkBox.checkBoxSelectedFill = UIColor(red: 0, green: 122 / 255, blue: 1, alpha: 1)
        checkBox.checkBoxBGFill = UIColor(red: 0.95, green: 0.95, blue: 0.95, alpha: 1)

        addChild(checkBox)
        checkBox.view.frame = container.bounds
        container.addSubview(checkBox.view)
        checkBox.didMove(toParent: self)
    }

    func didYSCeckBoxSelect(checks: [Bool]) {
        print(checks)
    }
}
  ```