Mein einfaches Ziel ist es, das Verstecken und Anzeigen von Funktionen zu animieren.
Button.hidden = YES;
Einfach genug. Ist es jedoch möglich, dass es ausgeblendet wird, anstatt nur zu verschwinden? So sieht es eher unprofessionell aus.
quelle
Mein einfaches Ziel ist es, das Verstecken und Anzeigen von Funktionen zu animieren.
Button.hidden = YES;
Einfach genug. Ist es jedoch möglich, dass es ausgeblendet wird, anstatt nur zu verschwinden? So sieht es eher unprofessionell aus.
In iOS 4 und höher gibt es eine Möglichkeit, dies nur mit der UIView-Übergangsmethode zu tun, ohne QuartzCore importieren zu müssen. Sie können einfach sagen:
[UIView transitionWithView:button
duration:0.4
options:UIViewAnimationOptionTransitionCrossDissolve
animations:^{
button.hidden = YES;
}
completion:NULL];
UIView.transition(with: button, duration: 0.4,
options: .transitionCrossDissolve,
animations: {
button.hidden = false
})
Michails Lösung wird funktionieren, aber es ist nicht der beste Ansatz.
Das Problem beim Alpha-Fading ist, dass die verschiedenen überlappenden Ansichtsebenen beim Ausblenden manchmal seltsam aussehen. Es gibt einige andere Alternativen, die Core Animation verwenden. Fügen Sie zuerst das QuartzCore-Framework in Ihre App ein und fügen Sie #import <QuartzCore/QuartzCore.h>
es Ihrem Header hinzu. Jetzt können Sie einen der folgenden Schritte ausführen:
1) Setzen Sie button.layer.shouldRasterize = YES;
den Alpha-Animationscode, den Michail in seiner Antwort angegeben hat, und verwenden Sie ihn. Dies verhindert, dass sich die Ebenen merkwürdig vermischen, hat jedoch einen leichten Leistungsverlust und kann dazu führen, dass die Schaltfläche verschwommen aussieht, wenn sie nicht genau an einer Pixelgrenze ausgerichtet ist.
Alternative:
2) Verwenden Sie stattdessen den folgenden Code, um die Überblendung zu animieren:
CATransition *animation = [CATransition animation];
animation.type = kCATransitionFade;
animation.duration = 0.4;
[button.layer addAnimation:animation forKey:nil];
button.hidden = YES;
Das Schöne an diesem Ansatz ist, dass Sie jede Eigenschaft der Schaltfläche überblenden können, auch wenn sie nicht animierbar ist (z. B. den Text oder das Bild der Schaltfläche). Richten Sie einfach den Übergang ein und legen Sie Ihre Eigenschaften unmittelbar danach fest.
transitionWithView
Parameter verwenden, um ein erfolgreiches Ein- und Ausblenden sicherzustellen.Die animierten UIView-Eigenschaften sind:
isHidden
ist keiner von ihnen, so wie ich es sehe, ist der beste Weg:Swift 4:
Ziel c:
quelle
Ausblenden:
Ziel c
Swift 2
Swift 3, 4, 5
Einblenden:
Ziel c
Swift 2
Swift 3, 4, 5
quelle
Ich benutze diese kleine Swift 3- Erweiterung:
quelle
Swift 3
quelle
schnell 4.2
mit Erweiterung:
einfache Methode:
quelle
Verwenden Sie diese Lösung für reibungslose FadeOut- und FadeIn-Effekte
Nutzung ist wie
Vielen Dank
quelle
fadeOut
funktioniert unter iOS 13 nur, wenn ich die festgelegten Zeilen entferneself.isHidden
.Zu
UIView
diesem Zweck habe ich eine Kategorie erstellt und ein spezielles, etwas anderes Konzept implementiert :visibility
. Der Hauptunterschied meiner Lösung besteht darin, dass Sie anrufen[view setVisible:NO animated:YES]
und direkt danach synchron prüfen können[view visible]
und das richtige Ergebnis erhalten können. Das ist ziemlich einfach, aber äußerst nützlich.Außerdem darf die Verwendung einer "negativen booleschen Logik" vermieden werden ( weitere Informationen finden Sie unter Code abgeschlossen, Seite 269, Positive boolesche Variablennamen verwenden ).
Schnell
UIView+Visibility.swift
Ziel c
UIView+Visibility.h
UIView+Visibility.m
quelle
Der Code von @Umair Afzal funktioniert nach einigen Änderungen in Swift 5 einwandfrei
für den Einsatz
quelle
Swift 4
Und um es zu benutzen, rufen Sie einfach diese Funktionen auf wie:
quelle
isHidden
ist ein unmittelbarer Wert und Sie können keine Animation darauf beeinflussen. Stattdessen können Sie Alpha verwenden, um Ihre Ansicht auszublendenUnd zum Zeigen:
quelle
Sie können es sehr einfach mit der Animatics- Bibliothek tun :
quelle
quelle
Sie können dies versuchen.
Und geben Sie Ihren Ansichtsnamen weiter
quelle
Wenn Ihre Ansicht standardmäßig ausgeblendet ist oder Sie den ausgeblendeten Status ändern, den Sie meiner Meinung nach in vielen Fällen sollten, bietet keiner der Ansätze auf dieser Seite beide FadeIn / FadeOut-Animationen. Es wird nur einer dieser Zustände animiert. Der Grund dafür ist, dass Sie den Status Hidden auf false setzen, bevor Sie UIView.animate aufrufen Methode " führt zu einer plötzlichen Sichtbarkeit. Wenn Sie nur das Alpha animieren, ist der Objektbereich immer noch vorhanden, aber nicht sichtbar, was zu Problemen mit der Benutzeroberfläche führt.
Der beste Ansatz ist also, zuerst zu überprüfen, ob die Ansicht ausgeblendet ist, und dann das Alpha auf 0,0 zu setzen. Wenn Sie den Status "Ausgeblendet" auf "Falsch" setzen, wird keine plötzliche Sichtbarkeit angezeigt.
quelle
UIView.transition (mit :) Funktion ist nett und ordentlich.
Viele haben es gepostet, aber keiner hat bemerkt, dass es einen Fehler gibt, der nur angezeigt wird, wenn Sie es ausführen.
Sie können versteckte Eigenschaften perfekt in true umwandeln. Wenn Sie versuchen, sie in false umzuwandeln, verschwindet die Ansicht einfach plötzlich ohne Animation.
Dies liegt daran, dass diese API nur innerhalb einer Ansicht funktioniert. Wenn Sie also eine Ansicht so umstellen, dass sie angezeigt wird , wird selbst sofort nur der Inhalt angezeigt, der schrittweise animiert wird.
Wenn Sie versuchen, diese Ansicht auszublenden, wird die Animation nach ihrem Inhalt bedeutungslos.
Um dies zu lösen, sollte beim Ausblenden einer Ansicht das Übergangsziel die übergeordnete Ansicht anstelle der Ansicht sein, die Sie ausblenden möchten.
quelle
Meine Lösung für Swift 3 . Also habe ich die Funktion erstellt, die die Ansicht in der richtigen Reihenfolge ein- und ausblendet (beim Ausblenden - Alpha auf 0 setzen und dann auf true verbergen; Ausblenden - zuerst die Ansicht aufdecken und dann Alpha auf 1 setzen):
quelle
completion
Block eine andere Animation, wenn siehide
falsch ist?Schneller 4 Übergang
Wenn Sie den Ansatz für ältere schnelle Versionen verwenden, wird eine Fehlermeldung angezeigt:
Nützliche Referenz .
quelle
isHidden
Wert wird sofort gerendert (dh die Ansicht wird sofort ausgeblendet / angezeigt).quelle
Versuchte einige der verdrängten Antworten, einige funktionieren nur für eine Situation, einige müssen zwei Funktionen hinzufügen.
Option 1
Nichts damit zu tun
view.isHidden
.Dann pass
isFadeIn
(true
oderfalse
)Option 2
Übergeben Sie keine Parameter. Es wird entsprechend ein- oder ausgeblendet
isUserInteractionEnabled
. Dies passt auch gut zur Situation hin und her animieren.Dann rufst du an
Das ist es. Hat mich irgendwann gekostet, hoffe es hilft jemandem.
quelle