👇

SwiftのisHighlightedとは?

2021/11/20に公開

1.SwiftのisHighlightedとは?

Apple公式ドキュメントによれば、「コントロールがハイライトを描画するかどうかを示すブール値です。」とのことです。
似たようなブール値で isSelected というものがありますが、これとどう違うのでしょうか?
isHighlightedが 「ボタンやセルが押されている最中かどうかを示す値」 ものに対して、isSelectedは 「ボタンやセルが選択されている状態かどうかを示す値」 みたいです。

Point

● isHighlighted - ボタンやセルが押されている最中かどうかを示す値
● isSelected - ボタンやセルが選択されている状態かどうかを示す値
話しを戻しますが、つまりisHighlightedは、truefalse でボタンやセルが押されている最中かどうかを判断するブール値ということです。

2.どう使う?

では実際にはどの様にして使うのでしょうか?
今回はUIButtonを使い、Buttonが押されている最中にBackgroundColorを変更するというのを例に確認してみましょう。
※下記のボタンタイトルもカスタムクラスに取り入れ、isHighlightedで色やタイトルを切替える方法ありますが、今回は背景のみにクローズアップし検証しています。

・ViewController側

import UIKit

class ViewController: UIViewController {
    @IBOutlet weak var button: SampleCustomButton!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        button.backgroundColor = .blue
        button.setTitle("ボタン", for:.normal)
        button.setTitle("highlighted中", for:.highlighted) //highlightedが分かりやすいようにtitleも変えておく
    }
}

・CustomButton側
下記の様に設定してあげることで、isHighlightedによって色を変えることができます1

import UIKit

class SampleCustomButton: UIButton {
    override open var isHighlighted: Bool {
        didSet {
            backgroundColor = isHighlighted ? .lightGray : .blue
        }
    }
}

こちらがデモです。
クリック時にhighlightedを検知し、背景色とタイトルが変わっています!

3.まとめ

この様に、isHighlightedを使えばボタンが押されている最中に、色やタイトルを変更することができます。
isHighlightedというものを改めて調べてみて、押されている最中なのか、選択された状態なのか、その時どう実装するのかというのを更に深く考えるきっかけになりました。
今後はカスタムクラスで汎用的にUIButtonを使い、その時の各色の設定もまとめていこうと思います。
読んでいただきありがとうございました!

・サンプルコード

https://github.com/Markun1975/SampleisHighlighted

参考記事

・【再入門】UICollectionViewとUITableViewのセルを選択したときに見た目を変える方法
https://tech.gunosy.io/entry/collectionview_tableview_selection#isHighlighted-と-isSelected-に応じて見た目を変える方法
【Swift】UIButtonをタップ(isHighlighted)した時にBackgroundColorを変更する

Discussion