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.
Réponses
Trop de publicités?À 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:
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.
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.
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.