14
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2019-09-05

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

checkbox1.gifcheckbox2.gifcheckbox3.gif

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)
  }
}
14
11
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?