ボタンのあるアプリを開発しています。ボタンにはテキスト、画像、背景はありません。
だから私がしたいのは、それに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で画像が割り当てられているボタンが他にもいくつかあります。押しても強調表示されません。
では、ボタンが押されたときに強調表示を取り除くにはどうすればよいですか?
「.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)
}
スウィフト3
yourBtn.setImage( UIImage.init(named: "imagename"), for: .normal)
現在(Swift 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)
}
まず、インターフェイスビルダーでボタンタイプをCustom
に設定し、ボタンの通常の状態の画像を設定します。
クラスファイルのボタンのIBOutletを次のように接続します
@IBOutlet weak var btnCheckbox: UIButton!
viewDidLoad
のクラスファイルで、選択した状態のイメージを
btnCheckbox.setImage(UIImage.init(named: "name_of_image"), for: .selected)
クラスファイルに@IBAction
を次のように作成します
@IBAction func onTapCheckBox(_ sender: UIButton) {
sender.isSelected = !sender.isSelected
}
次に、@IBAction
をインターフェースビルダーからボタンのTouch up Inside
イベントに接続します
簡単な解決策が1つあります。
@IBOutlet var tapButton: UIButton!{
didSet{
let image = UIImage(named: imageColor[randNum])
tapButton.setImage(image, forState: UIControlState.Normal)
}
さらに、属性インスペクターで、ボタンタイプを「カスタム」に設定します
Let = UIImage(named: "redTap.png")tapButton.setImage(image、.Normal)とします。
まず、必要な画像をAssets.xcassetsフォルダーに配置します。ドラッグするだけです。ダブルクリックすることで、好きなように呼び出すことができます。 「redTap」と呼ばれているとしましょう。
あなたが置くコードのために:
@IBOutlet var tapButton: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
let redTapImage = UIImage(named: "redTap")
tapButton.setImage(redTapImage, forState: UIControlState.Normal)
}
let button = UIButton(type: .Custom)
let image = UIImage(named:"redTap")?.imageWithRenderingMode(.AlwaysTemplate)
button.setImage(image, forState: .Normal)
button.tintColor = UIColor.redColor()