SwiftUIでチェックボックス

公開:2021/01/24
更新:2021/01/24
1 min読了の目安(約1100字TECH技術記事

ToggleのCheckboxToggleStyleはmacOS専用だったり
ネットで見つかる実装例も自分が求めているより複雑だったりしたので
最大限シンプルなものを自力で実装してみました。
参考になれば幸いです。

ソースコード

struct CheckBox: View {
    // 切り替える状態(初期値はfalse)
    @State private var isChecked = false
    
    // チェックボックスの表示
    var body: some View {
        Button(action: toggle) {
            if(isChecked) {
                Image(systemName: "checkmark.square.fill")
		    .foregroundColor(.green)
            } else {
                Image(systemName: "square")
            }
        }
    }
    
    // タップ時の状態の切り替え
    func toggle() -> Void {
        isChecked = !isChecked
        UIImpactFeedbackGenerator(style: .medium)
	    .impactOccurred()
    }
}

結果

おまけ

こだわり箇所として

UIImpactFeedbackGenerator(style: .medium)
    .impactOccurred()

で触覚フィードバックを実装しました。
これでToggleと同じような「ポコッ」という感触が実現でき、
押していて気持ちいいチェックボックスになります。

参考