/ / Animar para a altura do texto (autolayout) - ios, iphone, animação, autolayout

Animar para a altura do texto (autolayout) - ios, iphone, animação, autolayout

Eu quero animar de uma altura de 0 para oaltura do texto (UILabel). Estou usando o autolayout e não sei o quão alto o texto será. Minha abordagem foi começar definindo uma restrição height = 0 para o texto e animar assim:

//retrieves the height constrain of the clicked item
NSLayoutConstraint *heightContraint = [heightConstraints objectAtIndex:sender.tag];
//activates/deactivates the constraint
heightContraint.active = !heightContraint.active;
//animates
[UIView animateWithDuration:3 animations:^{
[self layoutIfNeeded];
}];

Meu problema é que, com essa abordagem, o textoaltura não anima, muda de uma altura de 0 para a nova altura instantaneamente. Apenas a mudança de posição / tamanho das vistas contidas é animada. Como eu animei a mudança de altura do texto sem saber a altura do texto?

Respostas:

0 para resposta № 1

Eu encontrei uma solução. Em vez de definir uma restrição para a altura, defino uma exibição de contenção (recorte), que contém o UILabel e a exibição acima. Em seguida, eu crio 2 restrições que fixam as bordas inferiores à exibição de contenção, uma relacionada ao UILabel e uma relacionada à exibição acima. Eu apenas ativo / desativo essas restrições como esta:

//get the constraints
NSLayoutConstraint *viewAboveTextConstraint =
[viewAboveTextConstraints objectAtIndex:sender.tag];
NSLayoutConstraint *uilabelContraint = [uilabelContraints objectAtIndex:sender.tag];
//flip the active states
viewAboveTextConstraint.active = !viewAboveTextConstraint.active;
uilabelContraint.active = !uilabelContraint.active;
//animate
[UIView animateWithDuration:.3 animations:^{
[self layoutIfNeeded];
}];