web-dev-qa-db-fra.com

Comment ajouterSubview avec une position?

J'ai quelque chose comme ça:

myViewController = [[MyViewController alloc] initWithNibName:@"MyView" bundle:nil];
[mainCanvas addSubview: myViewController.view];
self.view = mainCanvas;

Il sera ajouté à la position (0, 0), mais je veux l'ajouter à (0, 100) ou ailleurs. Comment faire?

28
DNB5brims

Quelque chose comme ça:

myViewController = [[MyViewController alloc] initWithNibName:@"MyView" bundle:nil];
myViewController.view.frame = CGRectMake(0, 100, myViewController.view.frame.size.width, myViewController.view.frame.size.height);  
[mainCanvas addSubview: myViewController.view];
self.view = mainCanvas;
54
acqu13sce

Outre la définition de la propriété frame, vous pouvez également définir la propriété center d'une vue.

12
Dave DeLong

Définissez la propriété frame sur la vue secondaire.

8
Gary

C'est le meilleur moyen que j'ai trouvé pour ajouter une sous-vue, comme un écran de chargement ou quelque chose que vous voulez montrer si vous êtes dans un UIView, UIScrollView ou UITableView.

myViewController = [[MyViewController alloc] initWithNibName:@"MyView" bundle:nil]; 
myViewController.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
[self.view addSubview:myViewController.view];
self.view.bounds = myViewController.view.bounds;

Cela fera apparaître la sous-vue en plein écran, peu importe où vous êtes dans la self.view en ajoutant la sous-vue à l'endroit où vous vous trouvez actuellement dans votre self.view au lieu de la positionner dans le coin supérieur gauche, ne montrant complètement si vous êtes tout en haut de votre vue.

7
whyoz