Coordonnées locales d'une View dans une autre View

vico92vico92 Membre
05:58 modifié dans API UIKit #1
Bonjour,

J'ai une UIImageView dans un UIViewControler dans la mainWindow.

1ere question:
Est-ce qu'une UIImageView a bien exactement les mêmes caractéristiques qu'une View ?
Je dirais que C'EST une sous-classe de UIView qui hérite donc de ses propriétés (frame,bounds,center etc.) Vrai ? donc pas besoin de créer une View juste pour y coller une ImageView ?

2ème question:
Puis-je animer la position Y de cette UIImageView en utilisant son système de coordonnées local, de sorte que cette image, après rotation, se déplace dans la direction de son propre axe Y ?


Merci,
Vico

Réponses

  • AliGatorAliGator Membre, Modérateur
    05:58 modifié #2
    1) Oui, UIImageView étant une sous-vue de UIView, elle hérite de toutes ses propriétés donc pas besoin d'une UIView pour l'encapsuler. Un chat est un animal vertébré, un animal vertébré a des vertèbres... donc un chat a des vertèbres... Une UIImageView a donc les propriétés bounds puisque c'est (entre autres) une UIView.

    2) Tu as 2 solutions pour faire ça : soit ne pas raisonner en coordonnées locales, mais avec les facilités de construction et de composition des CGAffineTransformMatrix, c'est pas méchant (tu composes une rotation de l'angle voulu, suivi d'une translation [ou l'inverse je sais jamais] de dY suivant l'axe Y (qui sera l'axe une fois "rotationné" donc) et basta... Soit créer, pour le coup, une UIView intermédiaire, à  laquelle tu n'appliques que la rotation... et dans cette UIView tu mets ta UIImageView, pour laquelle tu appliques une translation aux coordonnées (position) dans le repère local... de sa UIView parente rotationnée.
  • vico92vico92 Membre
    05:58 modifié #3
    dans 1241109476:


    2) Tu as 2 solutions pour faire ça : soit ne pas raisonner en coordonnées locales, mais avec les facilités de construction et de composition des CGAffineTransformMatrix, c'est pas méchant (tu composes une rotation de l'angle voulu, suivi d'une translation [ou l'inverse je sais jamais] de dY suivant l'axe Y (qui sera l'axe une fois "rotationné" donc) et basta... Soit créer, pour le coup, une UIView intermédiaire, à  laquelle tu n'appliques que la rotation... et dans cette UIView tu mets ta UIImageView, pour laquelle tu appliques une translation aux coordonnées (position) dans le repère local... de sa UIView parente rotationnée.


    Merci Ali, la deuxieme solution est allèchante, mais, le probleme sera que lorsque l'image sera deplacée sur l'axe Y de la view, cette image n'étant plus au centre de la view ne subira plus les rotations correctement. Ou alors il faudrait que le point d'encrage de la view suive la position de l'image...
    (car comme tu l'as compris, j'ai besoin que l'image tourne autour de son propre centre).
    Crois-tu que j'aurai le même probleme en utilisant la méthode CGAffineTransformMatrix ?

    Sinon, j'ai lu qu'en utilisant les termes frame ou bounds on spécifiait des infos locales ou relatives à  la superview, mais je n'arrive pas à  m'en servir...

    Bonne journée,
    Vico
Connectez-vous ou Inscrivez-vous pour répondre.