Edited at

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

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

GitHubはこちら

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


Installation


CocoaPods

Podfileに


Podfile

use_frameworks!

pod 'YSCheckBox', :git => 'https://github.com/sekies/YSCheckBox.git'


と追加します。

pod install します。


Usage

YSCheckBoxをインポートします。


ViewController.swift

 import YSCheckBox


任意のUIViewContorollerでYSCheckBoxViewControllerDelegate プロトコルに準拠します。


ViewController.swift

 class ViewController: UIViewController,YSCheckBoxViewControllerDelegate {


YSCheckBoxViewControllerインスタンスを生成します。生成時にチェックボックスのラベルを配列で指定します。


ViewController.swift

  let checkBox = YSCheckBoxViewController(labels: ["Orange","GrapeFruits","Banana"])


delegateと各種デザインプロパティを設定します。必須となるのはdelegateのみです。


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に依存します。


ViewController.swift

addChild(checkBox)

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

デリゲートメソッドを実装します。チェックボックスを選択するとこのメソッドが呼ばれます。YSCheckBoxViewController生成時に追加した配列の順にBoolが割り振られます。


ViewController.swift

  func didYSCeckBoxSelect(checks: [Bool]) {

print(checks)
}

コードの全体像です。


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)
}
}