Estou definindo um novo valor de texto para a UILabel
. Atualmente, o novo texto aparece perfeitamente. No entanto, gostaria de adicionar alguma animação quando o novo texto aparecer. Estou imaginando o que posso fazer para animar a aparência do novo texto.
ios
objective-c
ipad
uilabel
caanimation
Joo Park
fonte
fonte
Respostas:
Gostaria de saber se funciona, e funciona perfeitamente!
Objetivo-C
Swift 3, 4, 5
fonte
Objetivo-C
Para obter uma verdadeira transição de dissolução cruzada (rótulo antigo desaparecendo enquanto novo rótulo desaparecendo), você não deseja que o brilho se torne invisível. Isso resultaria em tremulação indesejada, mesmo que o texto não seja alterado .
Use esta abordagem:
Veja também: Animar texto UILabel entre dois números?
Demonstração no iOS 10, 9, 8:
Testado com o Xcode 8.2.1 e 7.1 , ObjectiveC no iOS 10 a 8.0 .
► Para baixar o projeto completo, pesquise SO-3073520 em Swift Recipes .
fonte
-addAnimation:forKey
para esse rótulo e altera o texto do rótulo.Swift 4
A maneira correta de desvanecer um UILabel (ou qualquer outro UIView) é usar a
Core Animation Transition
. Isso não piscará, nem ficará preto se o conteúdo não for alterado.Uma solução portátil e limpa é usar um
Extension
no Swift (invoque elementos visíveis de alteração anterior)A invocação é assim:
► Encontre esta solução no GitHub e detalhes adicionais sobre o Swift Recipes .
fonte
MIT
licença garante que seu Cocoapod pode ser usado livremente por todos e qualquer pessoa.desde o iOS4, obviamente isso pode ser feito com blocos:
fonte
Aqui está o código para fazer isso funcionar.
fonte
Solução de extensão UILabel
Função chamada simplesmente por
Obrigado por todas as dicas caras. Espero que isso ajude a longo prazo
fonte
Swift 4.2 versão da solução SwiftArchitect acima (funciona muito bem):
Invocação:
fonte
Swift 2.0:
OU
fonte
Com o Swift 5, você pode escolher um dos dois exemplos de código do Playground a seguir para animar as
UILabel
alterações de texto com algumas animações de dissolução cruzada.# 1 Usando
UIView
otransition(with:duration:options:animations:completion:)
método de classe# 2 Usando
CATransition
eCALayer
doadd(_:forKey:)
métodofonte
Solução Swift 4.2 (usando a resposta 4.0 e atualizando para novas enumerações para compilar)
fonte
Os valores padrão do sistema de 0,25 para
duration
e .curveEaseInEaseOut paratimingFunction
geralmente são preferíveis para consistência entre as animações e podem ser omitidos:que é o mesmo que escrever isso:
fonte
Esse é um método de extensão C # UIView baseado no código do @ SwiftArchitect. Quando o layout automático está envolvido e os controles precisam se mover, dependendo do texto do rótulo, esse código de chamada usa a Superview do rótulo como a visualização de transição, em vez do próprio rótulo. Eu adicionei uma expressão lambda para a ação para torná-la mais encapsulada.
Código de chamada:
fonte
Se você quiser fazer isso
Swift
com atraso, tente o seguinte:usando a seguinte função criada por @matt - https://stackoverflow.com/a/24318861/1982051 :
que se tornará isso no Swift 3
fonte
Há mais uma solução para conseguir isso. Foi descrito aqui . A ideia é subclassificar
UILabel
e substituir aaction(for:forKey:)
função da seguinte maneira:Exemplos de uso:
fonte