53606


今回、UIButtonにimageを挿入しようと試みたのですがなぜかtintcolorしか見えません。  
コードは下のような感じです。

[code]

    class ViewController: UIViewController{
    
        var button: UIButton!
        let image = UIImage(named: "Image")
    
        override func viewDidLoad() {
                super.viewDidLoad()
    
                let button = UIButton(type: .system)
                button.setImage(image, for: .normal)
                self.view.addSubview(button)
              }
        }
    
[/code]


CC BY-SA 4.0
2019-03-20T15:48:13.967
53604
2019-03-21T11:19:44.997
2019-03-21T11:19:44.997
32274
32274
question
swift ios swift4
ボタンに画像を貼りたいのですがうまくいきません


`UIButton().setImage(image, for: .normal)`ということは  
Buttonを新規に作成（`UIButton()`）し、そのButtonに画像をセットしなさい。という命令だと思います。

これだけだと、新規に作成したボタンなので、表示したい画面の`View`に`addSubview`しないと画像を貼ったボタンは画面に表示されないのではないでしょうか？

多分、行うべきは、

  1. `Storyboard`に置いたボタンを`@IBOutlet`でソースから参照できるようにし、そのボタンに`setImage`する

  2. `UIButton().setImage(image, for: .normal)`で作成したボタンを表示したい`view`に`addSubview`して、`frameRect`プロパティを変更することで目的の位置に移動させる

  3. `UIButton().setImage(image, for: .normal)`で作成したボタンを表示したい`view`に`addSubview`して、`AutoLayout`の`layout制約を`設定することで目的の位置に配置する

の、いずれかを行う必要があると思います。

3/21 追記  
イメージボタンを作成するときに、`type:`パラメーターを`.custom`にする必要があるようです。

下記にこちらで確認出来たサンプルを貼っておきます。

[code]

    class ViewController: UIViewController {
    
        var button: UIButton!
        let image = UIImage(named: "fugafuga") // 拡張子がpngの時のみ拡張子が不要らしい
    
        override func viewDidLoad() {
            super.viewDidLoad()
            // Do any additional setup after loading the view, typically from a nib.
    
            self.button = UIButton(type: .custom)
            self.button.setImage(self.image, for: .normal)
            self.view.addSubview(button)
            self.button.frame = CGRect(x: 0, y: 0, width: 64, height: 64)
        }// end override func viewDidLoad()
    }// end class ViewController
    
[/code]

あとは、`CGRect()`の`x:`, `y:`パラメーターでオフセットを左上からの距離で、`width:`,
`height:`パラメーターでボタンの大きさをお好みで指定して下さい。


CC BY-SA 4.0
2019-03-20T20:49:58.193
53606
2019-03-21T11:06:47.580
2019-03-21T11:06:47.580
14745
14745
53604
answer