44 votes

Les limites de NSView vs frame

Quelle est la différence entre les bornes et le cadre? En fait, pourquoi les limites existent-elles? La taille de 'bounds' est égale à la taille du cadre et son origine doit toujours être 0,0.

92voto

Dan Points 8469

À partir de la Vue et de la Fenêtre de l'Architecture Guide de Programmation pour iOS:

Un objet de vue pistes sa taille et son emplacement à l'aide de son cadre, des limites,des et centre de propriétés:

Le cadre de la propriété contient le rectangle de cadre, qui spécifie la la taille et l'emplacement de la vue dans son superview du système de coordonnées.

Les limites de la propriété contient les limites d'un rectangle, qui spécifie le la taille de la vue (et de son contenu d'origine) dans le local système de coordonnées.

Le centre de la propriété contient le sait point central de la vue dans la il s'agit du système de coordonnées.

Voici une bonne visualisation de cette explication:

enter image description here

9voto

tagirkaZ Points 180

La limite de l'origine n'est pas toujours 0,0. Il est facile de comprendre la différence entre le cadre et les limites, si vous regardez la façon dont les changements de limites de propriété de UIScrollView pendant le défilement.

Par exemple, vous avez UIScrollView avec cadre (0, 0, 320, 460), les limites de (0, 0, 320, 460) et ContentSize (640, 460). Son image sera toujours (0, 0, 320, 460), mais la coordonnée X de limites va changer en fonction de la distance de défilement.

Il peut être utile si vous voulez changer quelque chose en vous UIScrollView (créer et de supprimer des pages diynamically par exemple), si vous voulez savoir la distance de défilement.

8voto

Jim Points 3464

La pomme de documents dans la première réponse ne couvre pas ce qui se passe sur le cadre et les limites après la rotation de l'orientation paysage. Donc, pour être plus complet, il faut savoir que le châssis de la fenêtre et de la racine de la vue ne change pas après la rotation, mais les limites ne. Voir cet article pour un peu plus de détails et d'être prudent en utilisant l'image comme une référence pour autre chose que de l'orientation portrait.

De l'article:

Si votre vue contrôleur de niveau supérieur non-présentation de la fenêtre (c'est à dire, il est le bas-plus-vue-contrôleur), puis

self.frame

est toujours en orientation portrait. Wha? Oui, toujours dans le portrait de ce qui change est la transformation de votre point de vue. Si votre

self.bounds

est toujours exacte (en gardant à l'esprit le dernier point), mais

self.frame

peut ou peut ne pas donner les proportions que l'utilisateur est vraiment à voir, depuis, chaque point de vue est rapporté en termes de superview de l' coordonnées et prend en compte toutes les transformations appliquées à l' vue.

1voto

Maddiee Points 11

Un cadre de vue a la taille d'un rectangle dans lequel il peut parfaitement s'intégrer. Il semble toujours que les limites et le cadre soient identiques, mais ce n'est pas le cas. Considérez un carré qui vient de pivoter d'environ 45 degrés!

Ici, le cadre de ce carré pivoté sera le rectangle pour le remplir complètement et différera donc des limites de cet objet.

PS principalement dans les objets en rotation, les cadres et les limites ont tendance à différer.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X