43 votes

Pourquoi est-il un rectangle de cadre et de limites rectangle dans une UIView?

Bien bien, il est tard dans la nuit sombre, je ne comprends pas pourquoi il y a deux rectangles différents: le cadre et les limites.

Comme je le comprends, un simple rectangle qui aurait été tout enoug à tout faire. Le positionnement de la Vue elle-même par rapport à un autre système de coordonnées, puis le clipping c'est le contenu d'une taille spécifiée. Que voulez-vous faire avec deux rectangles? Et comment interagissent-ils avec eux?

Quelqu'un aurait-il une bonne explication? L'une à partir de l'apple docs avec l'enfant tenant le fruit n'est pas assez bon pour comprendre.

84voto

amattn Points 7908

Voici la triche:

  • frame est où la vue est (à l'égard de superview)
  • bounds est où la vue est autorisé à tirer (à l'égard de lui-même)

Quelques précisions:

Si vous positionnez le point de vue dans son superview, vous avez presque toujours changer l'image d'origine.

Si vous êtes d'écrêtage où la UIView est le dessin, vous avez presque toujours modifier ses limites.

Notez que vous êtes en droit d'avoir des limites qui est plus grand que l'image. Qui est, vous pouvez dessiner "à l'extérieur des lignes" de l'endroit où vous êtes.

5voto

Travis Jensen Points 2166

Le cadre est dans le superview du système de coordonnées, les limites dans l'affichage du système de coordonnées. De mon point de vue, il est pratique d'avoir les deux. Image semble être le plus utile des deux, à moins qu'il existe certains cas, je ne suis pas au courant d'où une sous-vue peut avoir une toute autre système de coordonnées (par exemple, pixels échelle différente) que le superview.

2voto

drewww Points 527

J'ai eu des ennuis avec les limites de ces derniers temps et ont fait de l'expérimentation. Les limites de la propriété ne se limite où une UIView peut dessiner, mais n'a pas de limite de ses sous-vues. L'autre chose limites des contrôles est d'événement tactile de l'expédition. Une vue ne sont pas, aussi loin que je peux dire, de recevoir les événements tactiles qui sont à l'extérieur de ses limites. De plus, tout sous-vue que, en dehors de la vue parent de limites ne recevra aussi les événements tactiles. Dans ces situations, vous avez très soigneusement mise à jour des limites du conteneur de vue que la taille et la position de ses sous-vues changement. Tout va toujours tirage fine (car les sous-vues ne sont pas coupés par les limites de leur parent) mais les touches ne seront pas reçus.

(Cela devrait vraiment être une réponse à un précédent post, mais puisque je ne peux pas répondre encore, il est coincé ici...)

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