8
votes

iOS - Animation du changement de taille de texte dans Uilabel ou UitextView?

Dans une application montrant des morceaux de texte, la taille de la police augmente lorsque l'appareil est tourné vers une orientation paysagère. Je n'aime pas comment il fait toute l'animation et saute soudainement à la nouvelle taille, alors j'aimerais animer le changement de taille au cours de la rotation.

J'ai lu quelque part qui jetant cette modification dans un bloc d'animation UIView ne fonctionne pas car la propriété Police n'est pas animée, quelles sont mes options pour faire cela?

Pour ma mise en œuvre spécifique, je n'ai pas simplement la mise à l'échelle du uilabel / uitexview as-est; Les limites de la boîte augmentent davantage (proportionnellement) que la taille de la police, il y aura donc une réaction dans le texte. C'est bien par moi.

EDIT: J'en voudrais une simple mise à l'échelle du uitextview .

En outre, j'avais envisagé de "l'animer" manuellement: j'ai une méthode qui définit mes vues et s'adapte à la taille de la police. Si je savais que la rotation était sur le point de démarrer et que la durée de l'animation, je pouvais le faire de temps afin qu'il rend une taille intermédiaire de police ou deux au milieu de l'animation. Toute aide pour obtenir ceux qui seraient appréciés.


1 commentaires

Avez-vous réussi à réaliser ce que vous vouliez faire? Pourriez-vous accepter l'une des réponses pour fermer la question?


4 Réponses :


1
votes

Modifier la taille de la police lorsque didanimatefirsthalfofrotationToinTerfaceOrientation: est appelé. De cette façon, l'utilisateur ne verra pas le changement une fois la rotation terminée. Il serait assez difficile de voir la taille de la police changer alors, car la rotation se produit!


1 commentaires

Cette méthode ne s'appelle pas si vous activez une animation en deux étapes, ce qui nécessite des choses manuelles supplémentaires que je veux vraiment éviter d'entrer. Mais bonne idée de toute façon!



6
votes

Une option est de dédouaner l'ancien texte, changez la taille de la police et la fondue dans. La propriété Police ne peut pas être animable, mais alpha est. Puisque Alpha est une propriété d'UIView, vous pouvez traiter toutes vos vues de texte de la même manière: Uilabel, UitextView, etc. Il a l'air aussi bien.


0 commentaires

4
votes

Un moyen de procéder pourrait être de:

  1. créer un gâteauframeanimation li>
  2. Définissez la mise à l'échelle et la rotation que vous souhaitez réaliser lors de cette animation à l'aide d'un ensemble d'objets CATRANSFORM3D LI>
  3. Ajoutez ces transformations à votre animation en ligne clé Li>
  4. Envoyer le message Addanimation code> à votre étiquette Object de la couche: [[Couche d'étiquette] Addanimation] code>; li> ol>

    ici serait un échantillon de code en supposant YourLabel code> est le uilabel code> vous souhaitez échoué et faire pivoter: p>

    CAKeyframeAnimation *scale = [CAKeyframeAnimation animationWithKeyPath:@"transform"];
    
    CATransform3D scaleUp = CATransform3DMakeScale(1.5, 1.5, 1); // Scale in x and y
    CATransform3D rotationScaled = CATransform3DRotate (scaleUp, 90, 0, 0, 1); // Rotate the scaled font
    
    [scale setValues:[NSArray arrayWithObjects:
    [NSValue valueWithCATransform3D:CATransform3DIdentity],
    [NSValue valueWithCATransform3D:rotationScaled],
    nil]];
    
    // set the duration
    [scale setDuration: 1.0];
    
    // animate your label layer
    [[yourLabel layer] addAnimation:scale forKey:@"scaleText"];
    


3 commentaires

@kelso. Avez-vous donné cela une pensée / essayer?


Pour obtenir le droit de synchronisation et la bonne rotation, vous pouvez utiliser la méthode décrite ci-dessus: WillanimaterotationTointerFaceOrientation: Durée:


@ kelso.b. Avez-vous déjà réussi à faire ce que vous vouliez réaliser? Que diriez-vous d'accepter l'une des réponses comme bonnes afin que votre question puisse être fermée? À votre santé. Du lait



6
votes

Si je savais quand la rotation était à propos de commencer, et la durée de la Animation ...

drôle, vous devriez mentionner cela. Juste avant la démarrage de l'animation, votre contrôleur d'affichage recevra un WillanimaterotationTointerFaceOrientation: Durée: message qui vous donne les informations exactes dont vous avez besoin.


0 commentaires