LoginSignup
60
60

More than 5 years have passed since last update.

【Swift4】コードからUIButtonを追加してイベントを取得する

Last updated at Posted at 2018-02-22

実行環境

【Xcode】Version 9.2
【Swift】Version 4.0.3

概要

コード上からボタンを追加してイベントを取得する方法のメモです。

方法

コード

override func viewDidLoad() {
    super.viewDidLoad()

    // UIButtonのインスタンスを作成する
    let button = UIButton(type: UIButtonType.system)

    // ボタンを押した時に実行するメソッドを指定
    button.addTarget(self, action: #selector(buttonEvent(_:)), for: UIControlEvents.touchUpInside)

    // ラベルを設定する
    button.setTitle("ボタンのテキスト", for: UIControlState.normal)

    // サイズを決める(自動調整)
    button.sizeToFit()

    // 位置を決める(画面中央)
    button.center = self.view.center

    // viewに追加する
    self.view.addSubview(button)
}

// ボタンが押された時に呼ばれるメソッド
@objc func buttonEvent(_ sender: UIButton) {
    print("ボタンの情報: \(sender)")
}

実行結果

スクリーンショット 2018-02-22 16.43.13.png

おまけ

// サイズを変更する
button.frame = CGRect(x: 0, y: 0, width: 150, height: 50)

// 任意の場所に設置する
button.layer.position = CGPoint(x: self.view.frame.width/2, y:200)

// 文字色を変える
button.setTitleColor(UIColor.white, for: UIControlState.normal)

// 背景色を変える
button.backgroundColor = UIColor(red: 0.3, green: 0.7, blue: 0.6, alpha: 1)

// 枠の太さを変える
button.layer.borderWidth = 1.0

// 枠の色を変える
button.layer.borderColor = UIColor(red: 0.3, green: 0.6, blue: 0.5, alpha: 1).cgColor

// 枠に丸みをつける
button.layer.cornerRadius = 25

// 影の濃さを決める
button.layer.shadowOpacity = 0.5

// 影のサイズを決める
button.layer.shadowOffset = CGSize(width: 2, height: 2)

// ボタンが押されたときのラベル
button.setTitle("押された!", for: UIControlState.highlighted)

// ボタンが押されたときの文字色
button.setTitleColor(UIColor.red, for: UIControlState.highlighted)

実行結果

スクリーンショット 2018-02-23 10.13.52.png

参考

60
60
0

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
60
60