2016-07-20 14 views
0

Ich möchte Subview ausgeblendet falsch machen, wenn Benutzer die Taste drückt. Diese Unteransicht hat eine Deckkraft von 60% zur Entwurfszeit. Die Unteransicht sollte mit glatter Animation beginnen, beginnend an der Stelle, an der die Schaltfläche vorhanden ist.Swift: Unteransicht mit Animation bei Klick auf die Schaltfläche zeigen

Screenshot for question

Im Folgenden finden Sie Code, den ich versucht habe:

@IBAction func moreOptions_Clicked(sender: AnyObject) { print("moreOptions clicked") 

    UIView.animateWithDuration(0.9, delay: 0.2, options: UIViewAnimationOptions.TransitionCurlDown, animations: { 
     //self.objMoreView.hidden = false 
     // Show view with animation 
    }, completion: nil)} 

Das hat nicht funktioniert. Irgendeine Lösungsmöglichkeit?

+1

versuchen Sie 'alpha = 0' und verstecken Sie es dann Fertigstellung? – Tj3n

Antwort

1

Ersetzen Sie Ihre .hidden = false von .alpha = 1 und es sollte funktionieren;)

Erläuterung:

Wenn Sie die "Sichtbarkeit" der Benutzeroberfläche Objekt möchte animieren:

Anfangswert Stellen Sie Ihre alpha unter 0 (Ihr Objekt wird "versteckt") Während Ihrer Animation, setzen Sie ihren Wert auf 1, die UIView.animateWithDuration() animiert die 0 -> 1 Änderung, indem alle Werte während der Dauer übergeben werden. Sie werden eine Animation haben, die Ihre Unteransicht progressiv zeigt.

Wenn Sie die Position oder die Größe des UI-Objekt möchte animieren:

yourObject.frame.size.(height or width)

oder

yourObject.frame.origin.(x or y)

Hoffe, dass ich Ihnen geholfen.

+0

Nein. Es hat nicht funktioniert –

+0

Ich aktualisierte meine Antwort, vielleicht könnte es detaillierter sein. –

+0

Für Mitglieder, die das gleiche Problem haben, wenn die Antwort die Lösung ist, zögern Sie nicht, es zu validieren. Es könnte ihnen helfen; p –

0

Sie können dies auch mit Einschränkungen tun. Setzen Sie zum Beispiel eine obere Einschränkung für Ihre Schaltfläche in Ihrer Ansicht. eine Referenz auf diese Einschränkung halten:

self.whatEverTopButtonConstraint = NSLayoutConstraint(item: self.whatEverButton, attribute: .Top, relatedBy: .Equal, toItem: self.whatEverSubView, attribute: .Top, multiplier: 1, constant: 0) 
self.whatEverSubView.addConstraint(self.whatEverTopButtonConstraint) 

dann, wenn Sie die Taste erscheint machen wollen, setzen Sie die Konstante dieser Einschränkung auf das, was Sie brauchen. Schließlich animieren Sie es einfach mit einem schönen Federeffekt. Es würde zu so etwas führen:

func showButton() { 
     self.whatEverTopButtonConstraint.constant = 20 //custom the right constraint constant here 
     UIView.animateWithDuration(0.9, delay: 0.2, usingSpringWithDamping: 0.8, initialSpringVelocity: 1, options: .CurveEaseInOut, animations: { 
     self.whatEverButton.alpha = 1 
     self.whatEverSubView.layoutIfNeeded() 
     }, completion: nil) 
    } 

Natürlich wird dieser Code die Position nur vertikal animieren. Wenn Sie möchten, dass es sich im selben Moment horizontal bewegt, setzen Sie zum Beispiel eine Einschränkung vom rechten Rand und setzen Sie dann kurz vor dem Aufruf der Animation die Konstante;)