質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

Q&A

解決済

1回答

2732閲覧

String型の変数を使ったUIImageの変更ができません

ababab

総合スコア47

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

0グッド

0クリップ

投稿2016/09/25 07:27

SwiftでString型の変数を使ったUIImageの変更ができません。
使用したい画像の名前は"face_1.png"と"skin_1.png"で、
String型の変数"Qstring"は"appDelegate.viewNumber"の数値により"face"から"skin"に変更します。

しかし、現状のコードだと画像が適用されません。
試しに変数を使わず

swift

1btnImage = UIImage(named: "face_1.png")!; 2btnImage = UIImage(named: "skin_1.png")!;

のように直接名前を書いてみたのですが、こちらだと画像が表示されます。
UIImageの画像名に変数を使う場合はどのようにして書けば良いのでしょうか?

コードはこちらになります。

宣言部

swift

1 var Qstring:NSString! 2

DidLoad

swift

1let appDelegate:AppDelegate = UIApplication.shared.delegate as! AppDelegate 2 3if(appDelegate.viewNumber == 1){ 4 Qstring = "face" 5}else{ 6 Qstring = "skin" 7} 8 9btn = UIButton() 10btn.frame = CGRect(x: 200,y: 130,width: 57,height: 57) 11btnImage = UIImage(named: "\(Qstring)_1.png")!; 12btn.setBackgroundImage(q2_2btnImage, for: UIControlState()); 13btn.tag = 2 14btn.addTarget(self, action: #selector(ViewController.selectbtn(_:)), for: .touchUpInside) 15self.view.addSubview(btn) 16

btn(ボタンを押して画像を切り替える処理)

swift

1let tag = sender.tag 2 3if(tag == 1){ 4 q2_1btnImage = UIImage(named: "\(Qstring)_1.png"); 5 q2_1btn.setBackgroundImage(q2_1btnImage, for: UIControlState()); 6}else{ 7 q2_1btnImage = UIImage(named: "\(Qstring)_1.png"); 8 q2_1btn.setBackgroundImage(q2_1btnImage, for: UIControlState()); 9}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

UIImageの画像名に変数を使う場合はどのようにして書けば良いのでしょうか?

swift

1// 変数がオプショナルなので変数名の後に!が必要です。 2btnImage = UIImage(named: "\(Qstring!)_1")!

最終的にやりたいことはappDelegateviewNumberに応じて最初に表示させる画像を設定して、ボタン押下で画像を切替えるということですか?
それでしたら以下の様にすることで画像を設定、切り替えできると思います。

swift

1import UIKit 2 3class ViewController: UIViewController { 4 5 var btn: UIButton! 6 7 override func viewDidLoad() { 8 super.viewDidLoad() 9 10 let appDelegate = UIApplication.shared.delegate as! AppDelegate 11 12 btn = UIButton() 13 btn.frame = CGRect(x: 200,y: 130,width: 57,height: 57) 14 btn.setBackgroundImage(UIImage(named: appDelegate.viewNumber == 1 ? "face_1" : "skin_1"), for: .normal) 15 btn.setBackgroundImage(UIImage(named: appDelegate.viewNumber == 1 ? "skin_1" : "face_1"), for: .selected) 16 btn.tag = 2 17 btn.addTarget(self, action: #selector(ViewController.selectbtn(_:)), for: .touchUpInside) 18 self.view.addSubview(btn) 19 } 20 21 func selectbtn(_ sender: UIButton) { 22 sender.isSelected = !sender.isSelected 23 } 24}

投稿2016/09/25 08:04

_Kentarou

総合スコア8490

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問