swiftでチェックボックスを作る in コード


CheckBoxのカスタムボタンクラスを作る

import UIKit

final class CheckBox: UIButton {

    //MARK: - プロパティ等
    let checkedImage = UIImage(systemName: "checkmark.square.fill")
    let uncheckedImage = UIImage(systemName: "square")

    var isChecked: Bool = false {
        didSet{
            if isChecked == true {

                self.setImage(checkedImage, for: .normal)
            } else {
                self.setImage(uncheckedImage, for: .normal)
            }
        }
    }

    //MARK: - ライフサイクル
    override init(frame: CGRect) {
        super.init(frame: frame)

        self.setImage(uncheckedImage, for: .normal)
        addTarget(self, action: #selector(buttonClicked), for: .touchUpInside)
    }

    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    override func layoutSubviews() {
        super.layoutSubviews()
        self.layer.cornerRadius = 10
    }

    //MARK: - 関数等

    @objc func buttonClicked(sender: UIButton) {
        if sender == self {
            isChecked = !isChecked
        }
    }

}


ViewController

import UIKit

final class ViewController: UIViewController {

    private lazy var checkButton: CheckBox = {
        let button = CheckBox()
        button.addTarget(self, action: #selector(setPassword), for: .touchUpInside)
        button.translatesAutoresizingMaskIntoConstraints = false
        return button
    }()

    override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = .white

        view.addSubview(checkButton)
        checkButton.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
        checkButton.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
    }

    @objc func setPassword() {

        if checkButton.isChecked {
            print("チェックされた")
            //チェックされた時の処理
        }

    }

}


完成イメージ

終わりに

誰かの参考になれば幸いです
Qiitaさんいつもお世話になってるので感謝
間違えてるところ等ありましたら教えてくださいー

参考