CGRect de positionnement selon le point central

Je suis en train de créer plusieurs vues d'une application iPad. D'abord j'ai créé un menu affichage, puis un sous-menu afficher les coordonnées en fonction de menu. De sorte qu'il ressemble à ceci:

CGRect de positionnement selon le point central

Ce que j'ai fait:

self.view = [[UIView alloc] initWithFrame:CGRectMake(self.parentViewController.view.frame.size.width, 0, 150, screenHeight)];

Mais maintenant, le sous-menu je suis en train de créer le contenu de la vue, qui est un UINavigationController. Essaie de faire la même chose, j'obtiens ce résultat:

CGRect de positionnement selon le point central

Ce que je suis en train de faire (cette fois la création de l'image sous-menu vue-contrôleur):

CGRect frame = CGRectMake(self.view.frame.origin.x + self.view.frame.size.width,
                            0,
                            [[UIScreen mainScreen] bounds].size.width - self.view.frame.origin.x - self.view.frame.size.width,
                            [[UIScreen mainScreen] bounds].size.height);

C'est assez explicites, mais, je viens d'obtenir le sous-menu de l'origine et de l'ajouter à sa largeur afin que je puisse obtenir le bord droit de coordonnées.

Après beaucoup de tentatives, j'ai réussi à faire fonctionner tout ça, parce que j'ai remarqué que le CGRectMake est en utilisant le centre de la UINavigationController vue d'organiser sa position. Donc le code suivant:

CGRect frame = CGRectMake(self.view.frame.origin.x + self.view.frame.size.width + 259,
                            0,
                            [[UIScreen mainScreen] bounds].size.width - self.view.frame.origin.x - self.view.frame.size.width,
                            [[UIScreen mainScreen] bounds].size.height);

Donne la bonne position.

Ce qu'il se passe? J'ai pensé CGRectMake origine serait toujours en haut à gauche, mais dans ce domaine, en particulier la vue est en fait en haut au centre (ou moyen-moyen, pas sûr.) Ce que je fais mal?

EDIT1:

Voici la sortie de la console pour l'image avec le bouton droit de la position:

CGRect de positionnement selon le point central

Remarquez comment la barre de navigation est maintenant positionné à droite:

CGRect de positionnement selon le point central

Mais le x-coord n'est pas 250 (comme il devrait l'être, parce que menu.largeur + sous-menu.largeur = 250.)

EDIT2:

J'ai finalement renoncé. Le problème était avec le générés automatiquement UINavigationBar, qui est créé par le UINavigationViewController. Je n'arrive pas à comprendre comment le configurer. Je vais laisser la question ouverte dans le cas où quelqu'un connaît la réponse.

eh bien cela dépend de ce que la vue que vous utilisez. L'origine est techniquement toujours en haut à gauche dans un élément de l'INTERFACE utilisateur de l'objet. Si vous avez disons un autre UIView objet que votre sous-vue, alors vous allez avoir à accueillir la sous-vue poser. Il semble commencer dans le milieu de l'auto.vue, mais c'est parce que ce sera à partir de (0,0) comme dans les auto régulière.vue Espérons que cette aide
Cela peut vous aider : stackoverflow.com/questions/6784823/...
stackoverflow.com/questions/11251988/...
Eh bien, vous devez comprendre ce qu'est la frame, qu'est-ce que la vue de la hiérarchie (le frame est par rapport au coin supérieur gauche de la superview) et probablement aussi d'un redimensionnement automatique des masques. CGRect est seulement un groupe de quatre chiffres, rien d'autre. La chose importante est de savoir comment il est interprété par la disposition de l'affichage mécanisme.
bien que la barre de navigation est créé automatiquement', je viens alloc avais et qui a entamé une vue vierge avec cette image. Est-ce pour cela? Dois-je créer une Vue uniquement à aligner correctement la barre de navigation?

OriginalL'auteur dccarmo | 2013-08-12