2017-09-28 1 views
1

Ich muss zwei Bilder (mit Animation) auf UIButton umschalten, aber das versteckt meine Beschriftung hinter Bild auf UIButton. Daher habe ich Subview von UILabel hinzugefügt und das wird auch nicht angezeigt. Ich habe sogar versucht, die Subview nach vorne zu bringen, aber das funktioniert auch nicht.UIButton text nicht sichtbar beim animieren button image

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() 
} 

Was ist los?

+0

Was haben Sie im Optionsfeld hinzugefügt? – Ishika

+0

@ishika das sind die UIButtons. – Prateekro

+0

Ich wollte fragen, haben Sie Steckdosen erstellt oder Tasten programmgesteuert erstellt? – Ishika

Antwort

3

Ich werde versuchen, Ihnen eine einfache Lösung zu geben. Wählen Sie eine Schaltfläche und passen Sie den ausgewählten und den Standardstatus vom Storyboard selbst an. Wählen Sie zum Beispiel den Standardstatus einer Schaltfläche aus und geben Sie ihr einen Titel und ein Bild vom IBInspector. Wiederholen Sie dann den Vorgang für den ausgewählten Status und wählen Sie die Statuskonfigurationen aus. enter image description here

Dann können Sie auch das Bild und den Titel der Schaltfläche verwalten, wie im Bild gezeigt. enter image description here

Dann auf zuletzt können Sie Ihren Code verwalten, wie unten angegeben:

 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 
    } 
} 

können Sie auch zwischen verschiedenen Animationstypen wie pro Ihre Anforderung wählen.

+0

Wie ich aus einer anderen Sicht in die Ansicht gehe. Ich möchte die Ansicht die Tasten wie blinkende Glühbirne starten. (Toggle 2 Bilder.) Ist das mit der obigen Lösung möglich? – Prateekro

+0

Ich möchte die Schleife von Toggle fortsetzen, bis es ein Klicken gibt. auf einer der Optionen. – Prateekro

+0

Oh, das funktioniert wie ein Zauber. Ich habe notwendige Änderungen vorgenommen, um meine Anforderungen zu erfüllen. – Prateekro

0

Haben Sie versucht, ein Bild als Hintergrundbild zu erstellen? ?

Option .setBackgroundImage (UIImage (genannt: "green_button.png") !, für: .Normal)

+0

Ja. @kathiria aber es funktioniert nicht mit Animation – Prateekro

0

Sie die Hintergrundbilder für UIButton für normale und ausgewählten Zustand gesetzt werden und dann animieren, wenn zwischen den Staaten Makeln (umschalten ausgewählt und nicht auf Knopfdruck gewählt)

+0

Aber ich konnte keine Möglichkeit finden, die Hintergrundbilder zu animieren. Könnten Sie etwas dagegen haben. Bereitstellung und Code-Skelett für sie. Danke im Voraus. – Prateekro