changer l'origine d'une imageView

Bonjour a tous , voici mon problème :


 

 

je dois afficher 3 cercles (en imageView). Ceux ci peuvent prendre plusieurs valeurs de width et de height : 90 / 90 , 165 / 165 et 200 / 200 (donc 3 tailles de cercles) 

 

ce que je veux faire c'est que a chaque fois que la taille des cercles va changer (les tailles changent toutes en meme temps) , que la longueur entre les cercles soit egale, et egale a la longueur entre le bord d'un cercle est le bord de la vue.

 

j'ai donc fait mes declarations : 

 



int r1; //diametre cercle 1

int r2; //diametre cercle 2

int r3; //diametre cercle 3

int rt; //somme des diametres

int l; //distance entre les cercles

int L; //largeur ipad donc 768

int c1; //coordonne x du centre du cercle 1

int c2; //coordonne x du centre du cercle 2

int c3; //coordonne x du centre du cercle 3


après cela , j'ai rentre mes formules :

 




rt = r1 + r2 + r3 ;

l = ( L - rt ) / 4;

c1 = l + (r1)/2 ;

c2 = (2 * l) + r1 + (r2)/2 ;

c3 = L - l - (r3)/2 ;


J'ai mis des logs pour voir si cela marchait , et oui , Xcode me sort bien toutes les bonnes valeurs .


 


J'ai ensuite fixé le centre de chaque cercle en fonction des valeurs qu'il aura calculer : (rond1,rond2 et rond3 sont des UIImageView)




rond1.center = CGPointMake(c1, 830);

rond2.center = CGPointMake(c2, 830);

rond3.center = CGPointMake(c3, 830);


 Mais le problème c'est que apres avoir écrit les lignes qui servent a régler la frame : 


 





rond1.frame = CGRectMake(rond1.frame.origin.x, rond1.frame.origin.y,r1, r1);
rond2.frame = CGRectMake(rond2.frame.origin.x, rond2.frame.origin.y,r2, r2);
rond3.frame = CGRectMake(rond3.frame.origin.x, rond3.frame.origin.y,r3, r3);

Les cercles ne sont plus alignés ! a mon avis c'est du au fait que l'origin est prise en haut a gauche de l'imageView. 


je voudrais donc que l'origin soit confondue avec le centre du cercle (c1, c2 et c3) pour que cela marche ! (je penses ?)


J'ai cherché sur le net et j'ai vu que on pouvait faire ca sur les anciennes versions d'interface builder comme ceci : 

Réponses

  • Joanna CarterJoanna Carter Membre, Modérateur
    Pourquoi régler les frames après avoir régler les centres ? En réglant les centres, on régle en même temps le frame
  • justement , car je dois après régler la width et la height de l'imageview ! je voulais le faire comme ca : 



    rond1.frame.size.height == r1;
    rond1.frame.size.width == r1;

    mais ca ne marche pas et ca met un message :  



    Equality comparison result unused

    y'a pas un autre moyen de régler seulement les dimensions d'une imageview sans passer par le imageView.frame ? 


    sur tout ce que j'ai trouve sur internet il passait par ca et faisait ca : 



    rond1.frame = CGRectMake(rond3.frame.origin.x, rond3.frame.origin.y,r1, r1);
  • Joanna CarterJoanna Carter Membre, Modérateur


     


    justement , car je dois après régler la width et la height de l'imageview ! je voulais le faire comme ca : 



    rond1.frame.size.height == r1;
    rond1.frame.size.width == r1;

    mais ca ne marche pas et ca met un message :  



    Equality comparison result unused



     


    C'est parce que tu as utilisé == en place de =


     


    Mais, quand même, tu ne peux pas modifier le frame d'un UIView - il faut le remplacer.


     




     


    y'a pas un autre moyen de régler seulement les dimensions d'une imageview sans passer par le imageView.frame ? 




     


    Mais si, tu l'as déjà  trouvé...


     




    sur tout ce que j'ai trouve sur internet il passait par ca et faisait ca : 



    rond1.frame = CGRectMake(rond3.frame.origin.x, rond3.frame.origin.y,r1, r1);



     


    Dans ton code, il faudrait, d'abord, modifier la taille et, après, le centre



    CGRect frame = rond1.frame;

    frame.size = CGSizeMake(r1, r1);

    rond1.frame = frame;

    rond1.center = CGPointMake(c1, 830.0);
Connectez-vous ou Inscrivez-vous pour répondre.