2016-06-26 12 views
3

私は、ボタンを持つアプリケーションで作業しています。ボタンにはテキスト、画像、または背景がありません。ボタンイメージを迅速に変更するにはどうすればよいですか?

私がしたいことは、それにviewDidLoad関数でイメージを与えることです。

これは私が持っているものです。

@IBOutlet var tapButton: UIButton! 

override func viewDidLoad() { 

    super.viewDidLoad() 

    tapButton.setImage("redTap.png", forState: UIControlState.Normal) 
} 

しかし、私はUIIMageに文字列を変換することはできませんというエラーがあります。

どのように動作させるには?

私が試してみました:

let image = UIImage(named: "redTap.png") 

tapButton.setImage(image, forState: UIControlState.Normal) 

を、私はそれが動作するように得ているが、今、私は問題を抱えています。

イメージは赤いテキストであると思われますが、青色で表示されます。

私が使用して正しく表示する画像を取得することができた:私は今、欲しい

let image = UIImage(named: imageColor[randNum])?.imageWithRenderingMode(.AlwaysOriginal) 
tapButton.setImage(image, forState: UIControlState.Normal) 

は、ボタンが押されたときに、ボタンがハイライトされていないことです。私は、コードではなく、xcodeでそれらに割り当てられたイメージを持つ他のいくつかのボタンを持っています。押されたときに強調表示されません。

ボタンを押したときにどのように強調表示を解除できますか?

答えて

8

あなたは ".PNG" を必要としません。

".imageWithRenderingMode(.AlwaysOriginal)"が機能している場合:同じイメージを異なる状態に保つには、異なる状態に同じイメージ/プロパティを設定する必要があります。

@IBOutlet var tapButton: UIButton! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    tapButton.setImage(UIImage(named: "redTap")?.imageWithRenderingMode(.AlwaysOriginal), forState: .Normal) 
    tapButton.setImage(UIImage(named: "redTap")?.imageWithRenderingMode(.AlwaysOriginal), forState: .Highlighted) 
} 
+0

現在は動作していますが、画像と同じ赤いボタンを表示する代わりに、青色のボタンが表示されます。元の画像を表示するにはどうしたらいいですか? – user2303213

+0

コードを更新して、さまざまな状態で同じように保つ方法を示しました。 –

+0

2つの状態を設定する必要はありません。それ以外のものが設定されていない場合、すべての状態は「通常」の状態で使用されているのと同じイメージを使用します。 – rmaddy

0

レッツ画像= UIImage(命名: "redTap.png") tapButton.setImage(画像、.Normal)

+0

私はそれを試みましたが、それでも動作しません – user2303213

+0

あなたのイメージはXCode image.assetsフォルダ内にありますか? – impression7vx

0

まず、私はあなたがAssets.xcassetsフォルダ内たかった画像を入れてしまうでしょう。それをドラッグするだけです。そして、それをダブルクリックして、あなたが望むものを呼び出すことができます。それは "redTap"と呼ばれることができます。

コードについて、あなたは置く:

@IBOutlet var tapButton: UIButton! 

override func viewDidLoad() { 

    super.viewDidLoad() 

    let redTapImage = UIImage(named: "redTap") 
    tapButton.setImage(redTapImage, forState: UIControlState.Normal) 
} 
0
let button = UIButton(type: .Custom) 
let image = UIImage(named:"redTap")?.imageWithRenderingMode(.AlwaysTemplate) 
button.setImage(image, forState: .Normal) 
button.tintColor = UIColor.redColor() 
0

1つの簡単な解決策があります:それ以外にも、属性インスペクター、SETボタンタイプで 'カスタム'

+0

これは、ボタンを押したときにボタンがハイライト表示されないようにするためですか? – user2303213

+0

提供したコードを使用しようとしましたが、画像が表示されなくなりました。 – user2303213

+0

ボタンの種類をカスタムに設定していますか? – wenqi

5

スウィフト3

yourBtn.setImage(UIImage.init(named: "imagename"), for: .normal) 
1

@IBOutlet var tapButton: UIButton!{ 
didSet{ 
let image = UIImage(named: imageColor[randNum]) 
tapButton.setImage(image, forState: UIControlState.Normal) 
} 

は、今すぐ(速報3版):

@IBOutlet var tapButton: UIButton! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    tapButton.setImage(UIImage(named: "redTap")?.withRenderingMode(.alwaysOriginal), for: .normal) 
    tapButton.setImage(UIImage(named: "redTap")?.withRenderingMode(.alwaysOriginal), for: .normal) 
} 
関連する問題