2017-09-28 16 views
1

UIButtonで2つの画像(アニメーションあり)を切り替える必要がありますが、UIButtonで画像の背後にラベルが表示されません。それで、私はUILabelのサブビューを追加しましたが、それも表示されません。私はさらにサブビューを前面に持ってきてみましたが、それもうまくいきません。ボタン画像をアニメーション化するときにUIButtonテキストが表示されない

let options = [option_1, option_2, option_6] 
var imageArray = [UIImage]() 

imageArray.append(UIImage(named: "light_button.png")!) 
imageArray.append(UIImage(named: "dark_button.png")!) 

let label = UILabel(frame: CGRect(x: 0, y: 0, width: self.option_1.frame.width, height: self.option_1.frame.width)) 
label.text = "HEY" 
label.font = UIFont.systemFont(ofSize: 18) 
option_1.addSubview(label) 
option_1.bringSubview(toFront: label) 

for option in options{ 
    option?.setImage(UIImage(named: "green_button.png")!, for: .normal) 

    option?.imageView!.animationImages = imageArray 
    option?.imageView!.animationImages = imageArray 

    option?.setTitle("TEST TEXT", for: .normal) //Even this don't work 

    option?.imageView!.animationDuration = 2.35 
    option?.imageView!.startAnimating() 
} 

何が問題なのですか。

+0

オプション配列に何を追加しましたか? – Ishika

+0

@ishikaこれらはUIButtonsです。 – Prateekro

+0

私はアウトレットを作成したのか、ボタンをプログラムで作成したのですか? – Ishika

答えて

3

私はあなたに簡単な解決策を提供しようとします。 ボタンを押して、選択したデフォルト状態をストーリーボード自体から調整します。たとえば、ボタンのデフォルト状態を選択し、IBInspectorからタイトルとイメージを与えます。選択した状態と同じプロセスを繰り返し、状態の構成を選択します。 enter image description here

また、画像のようにボタンの画像とタイトルを管理することもできます。 enter image description here

下記の通りその後で、最後にあなたのコードを管理することができますが:

 class ViewController: UIViewController { 
    @IBOutlet weak var buttonObj: UIButton! 
    var stop = false 
    var timer:Timer? 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view. 
     // toggleButtons() 
     timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(self.toggleButtons), userInfo: nil, repeats: true); 
    } 

    func toggleButtons(){ 
     if stop{ 
      timer?.invalidate() 
     }else{ 
      buttonObj.toggleSelection() 
     } 


    } 

     @IBAction func btnClicked(_ sender: Any) { 

     //Once you click the button stop will become true and hence your timer will invalidate 
     stop = true 
    } 
} 
    //MARK:-******** UIButtonExtension *********** 
extension UIButton { 
    func toggleSelection() { 
     self.selected = self.selected ? false : true 
    } 
} 

あなたはまた、あなたの要件ごとに様々なアニメーションの種類を選択することができます。

+0

私は別のビューからビューに移動します。私は球が点滅するようなボタンを開始するビューをしたい。 (2つの画像を切り替える)上記の解決策で可能ですか? – Prateekro

+0

クリックがあるまで、トグルのループを続行します。いずれかのオプションを選択します。 – Prateekro

+0

ああ、これは魅力のように動作します。私は自分の要求を満たすために必要な変更を加えました。 – Prateekro

0

イメージを背景イメージに設定しようとしましたか? ?

オプション.setBackgroundImage(UIImageは(命名:.normal:のための「green_button.png」)!)の状態の間でトグルするときには、通常、選択した状態のためにUIButtonの背景画像を設定して、アニメーション化も

+0

はい。 @ kathiriaしかし、アニメーションと動作しません – Prateekro

0

(ボタンをタップすると選択され、選択されずにトグルされます)

+0

しかし、私はバックグラウンドイメージをアニメーション化する方法を把握することができませんでした。 お願いします。それのためのスケルトンを提供し、コード化する。前もって感謝します。 – Prateekro

関連する問題