最初に
この記事はswiftを勉強し始めた超初心者による超初心者のためのものになっているので、細かいミスなどが散見されるかもしれませんがご了承ください。
buttonとactionの結びつけ
button
と何らかのAction
を結びつける方法は二つあります。(多分)
1.@IBActionを使用する方法
@IBAction func print(){
print("ボタンが押されました")
}
@IBAction
で宣言した関数はstoryboard
上でbutton
と関連付けができるので、それを行ってaction
を使用する方法です。button
をどんな感じで押したときにaction
がされるのかっていうのはstoryboard
上で関連付けを行うときに決定します(touchUpInside
とか)。
2.@objcを使用する方法
@IBOutlet var button: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
button.addTarget(target: self, action: #selector(print(_:)), for: UIControl.Event.touchUpInside)
}
@objc func print(_ sender: Any){
print("ボタンが押されました")
}
@objc func
で宣言した関数を addTarget
で button
にコード上で結びつける方法です。この場合、button
と action
の関連付けはコード上で行っているので、必要になる関連付けはUIパーツの button
の関連付けです。
addTarget
の中身については、target
は基本的に self
、action
の中に #selector(関数名(sender))
っていう形でそのボタンが押されたときの action
となる関数を記述し、for
にはどんなタッチイベントのときに起動するのかということを設定します。細かい話は別の記事を見てください。
ちなみに、このやり方はGestureRecognizer
などを使用するときにも使えます。
senderについて
@IBAction func print(_ sender: Any){
}
@IBAction func print(_sender: UIButton){
}
@IBAction func print(){
}
基本的には上のどれでもいけます。ただ @objc
と addTarget
を使用する場合は sender
を未設定でいくとダメみたいです。
buttonのカスタマイズ
@IBOutlet var button: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
//ボタンの背景色を変える
button.backgroundColor = .red
//ボタンの文字を設定する
button.setTitle("タイトル", for: .normal)
//ボタンのフォント、文字サイズを設定する
button.titleLabel?.font = UIFont(name: "フォントの名前", size: 20)
//ボタンの文字色を変える
button.tintColor = .blue
//ボタンに画像を設定する
button.setImage(UIImage(named: "画像の名前"), for: .normal)
//ボタンに枠線をつける(枠線の太さを変える)
button.layer.borderWidth = 3.0
//ボタンの枠線の色を変える
button.layer.borderColor = UIColor.black.cgColor
//ボタンの枠線の丸みを変える
button.layer.cornerRadius = 5.0
//ボタンに影の明瞭さを変える
button.layer.shadowOpacity = 0.7
//ボタンの影の丸みを変える
button.layer.shadowRadius = 3
//ボタンの影の色を変える
button.layer.shadowColor = UIColor.black.cgColor
//ボタンと影の離れ具合を設定する
button.layer.shadowOffset = CGSize(width: 5, height: 5)
}
最後に
いろいろとミスってるところとかあると思うので、ご指摘お願いします。