[Swift]ボタンをタップするごとにボタンの画像を切り替える

開発

現在開発中のお絵かきアプリに消しゴム機能を実装しました。
消しゴムと鉛筆のツールは切り替えながら使っていくので、ツールエリアの節約のために
同じボタンでペン、消しゴムツールを切り替えていく処理を実装します。

といっても、キモはimages.xcassetsにある画像ファイルをどうやって取得するかと、
それをどうやってボタンの画像に設定するのかの2つだけです。

images.xcassetsにある画像ファイルの取得

例えばimages.xcassetsにpenという画像とeraserという画像があるとすると、
penのimageを取得するためには

let image = UIImage(named: "pen")

でOKです。

buttonに画像をセットする方法

適当にいじっていると

button.imageView!.image = image

としたくなりますがこれでは画像は切り替わりません。

button.setImage(image)

とする必要があります。

まとめ

これらを総合して、該当のボタンのTouch Up Insideイベントにこのようなメソッドを割り当てます。

    @IBAction func tapErase(sender: AnyObject) {
        var button = (sender as UIButton)
        if isPenSelected {
            penColor = UIColor(red: 0, green: 0, blue: 0, alpha: 1)
            button.setImage(UIImage(named: "pen"), forState: UIControlState.Normal)
        } else {
            penColor = UIColor(red: 1, green: 1, blue: 1, alpha: 1)
            button.setImage(UIImage(named: "eraser"), forState: UIControlState.Normal)
        }
        isPenSelected = !isPenSelected
    }

今のところペンの場合黒、消しゴムの場合白で塗ってるだけなのでこんなかんじです。

コメント

タイトルとURLをコピーしました