2010-12-10 40 views
10

J'ai passé quelques heures à essayer de positionner un UIView et finalement compris que j'avais besoin de modifier le cadre des vues. Donc, j'ai ajouté une méthode « setPosition » à la sous-classe UIViewController comme celui-ciComment positionner un UIView?

- (void) setPosition:(CGPoint)position 
{ 

    CGRect newFrame = self.view.frame; 
    newFrame.origin.x = position.x; 
    newFrame.origin.y = position.y; 
    self.view.frame = newFrame; 

} 

Cependant, cela semble si simple que je ne comprends pas pourquoi UIViews n'ont pas déjà cette méthode, qui me fait penser que ce peut-être pas être la bonne façon de le faire. Donc c'est ma question ...

Est-ce que cette méthode est OK ou est-ce que je fais quelque chose que je ne devrais pas faire ... pour une raison quelconque?

Répondre

12

Copier, modifier et régler à nouveau le cadre comme vous l'avez fait ici est la manière dont cela se fait généralement. Cela peut aussi se faire en créant un rect et la mise directement:

UIView.frame = CGRectMake(50,50,50,50);//x,y,w,h

Faire cela dans un bloc d'animation animer ces changements.

Alternitively vous pouvez définir un point de vue du Centre avec:

UIView.center = CGPointMake(50,50);

+0

Si vous avez des références pour IBOutlets, mais que vous voulez placer un élément qui ne peut être créé que par programmation, je crée un UIView (myFrame) à utiliser comme frame, puis MyCustomView.frame = [myFrame bounds], et j'ajoute MyCustomView dans le conteneur de la vue principale – jay

2

Autre façon:

CGPoint position = CGPointMake(100,30); 
[self setFrame:(CGRect){.origin = position,.size = self.frame.size}]; 

Cette i enregistrer les paramètres de taille et de changer l'origine uniquement.