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:
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:
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:
Remarquez comment la barre de navigation est maintenant positionné à droite:
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.
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
Vous devez vous connecter pour publier un commentaire.
Centre d'un
CGRect
est unCGPoint
créé à partir de laorigin.x + ( size.width /2 )
etorigin.y + ( size.height /2 )
.CGRectGetMidX
etCGRectGetMidY
définie dans CGGeometry.hCe n'est pas exactement ce que je demande, je pense.
Mais il vous donne ce dont vous avez besoin. @abizern nice. Je savais que le NS. Ne savais pas que la CG équivalente.
Si possible, vous devriez envisager d'Auto Présentation comme il fera ce vraiment facile.
OriginalL'auteur uchuugaka
Ce fera le bouton dans le centre, peu importe ce que l'appareil est
OriginalL'auteur Youstanzr
CGRectMake crée une stucture de (x,y, largeur, hauteur).
Il votre part pour définir les valeurs correctes.
d'abord, il permet de ne pas en ligne pour le débogage. création de 4 variables locales x,y,w,h et assigner des valeurs, puis créer la CGRect. 2) votre x coord semble étrange x + largeur hors de la vue. le x de la sous-vues image doit être dans le cadre.x et le cadre.x + largeur.
Mais ne devrait pas le cadre.x > xcoord > frame.x + largeur de me donner un cadre à l'intérieur du sous-menu?
Modifié la question avec plus d'info
OriginalL'auteur AlexWien