UIButtonをコードで実装したときに、タップアクションをつける方法です。
忘れがちなのでメモ。addTarget以下はXcodeも補完してくれないです。
ちなみに、selectorで呼ばれる関数の引数は、設定できるものが限られているようで、
引数のとり方は、主に下記の3パターンになるようです。
1)引数なし
2)sender(イベントの発生元であるUIコンポーネント)引数を1つ取る
3)senderに加えてevent(UIEventのインスタンスで、イベントの種類やタッチオブジェクトを持つ)の引数を取る
実行環境
Swift:4.1.2
Xcode:10.1
UIButtonのサイズ調整の方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
import UIKit class ViewController: UIViewController { var button:UIButton = UIButton() override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. } override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() self.button.frame.size.width = 200 self.button.frame.size.height = 100 self.button.frame.origin.x = self.view.frame.size.width/2 - self.button.frame.size.width/2 self.button.frame.origin.y = self.view.frame.size.height/2 - self.button.frame.size.height/2 self.button.backgroundColor = UIColor.red self.view.addSubview(button) self.button.addTarget(self,action: #selector(self.tapButton(_ :)),for: .touchUpInside) } @objc func tapButton(_ sender: UIButton){ print("ボタンがタップされた") } } |
どうでもいい発見ですが、↓のように設定すると、originのxとyを設定するときに、widthとheigtは0の値になるようで、ちゃんとボタンが真ん中に表示されませんでした。
self.button.frame = CGRect.init(x: self.view.frame.size.width/2 – self.button.frame.size.width/2, y: self.view.frame.size.height/2 – self.button.frame.size.height/2 , width: 200, height: 100)