2009-09-18 5 views
1

J'ai une hiérarchie de vues en tant que sous-vue d'une instance UIScrollView. La hiérarchie des vues utilise une vue de conteneur simple comme enveloppe autour d'une ligne horizontale de mosaïques de sous-vues dont chacune est une sous-classe UIView qui remplace drawRect. Rien d'extraordinaire.Les sous-vues UIScrollView NE maintiennent PAS les dimensions correctes des limites lors du zoom

À titre de vérification d'intégrité, j'effectue un écho des limites, du cadre et de la transformation de chaque mosaïque de sous-vue. À mon grand étonnement, chacun d'entre eux reste inchangé pendant le zoom! C'est un gros problème parce que j'ai l'intention de redessiner chaque tuile après une séquence de zoom est terminée. Sans dimensions correctes c'est impossible.

Comment diable sommes-nous censés faire du dessin personnalisé en utilisant Quartz dans ces carreaux s'ils ont des dimentsions complètement incorrectes.

Quelqu'un pourrait m'éclairer s'il vous plaît. Merci.

Cheers,

Doug

Répondre

0

Je peux me tromper, mais ce sont seulement les dimensions logiques; ils seraient mis à l'échelle, tournés et déformés en fonction de la transformation que le UIScrollView a mis sur eux. Le contexte d'affichage doit également être déformé de la même manière et, par conséquent, la méthode drawRect: doit continuer de fonctionner normalement.

+0

Pour plus de clarté, je me fais l'écho self.bounds, self.frame et self.transform dans la drawRect surchargée: méthode rect de chacun des sous-vue "tuiles". À moins que ces propriétés aient chacune des dimensions de pixels précises, il est impossible de rendre correctement le contenu de chaque mosaïque. Qu'entendez-vous par "dimensions logiques"? Les limites, le cadre et la transformation sont les propriétés géométriques fondamentales qui définissent l'emplacement et l'orientation d'un UIView sur l'écran. – dugla

0

MISE À JOUR

Problème résolu. J'avais oublié de prendre en compte ce cadre de coordonnées à l'étude. En inspectant le cadre/les limites/la transformation des superviews, ils changent en effet pendant le zoom. Le dessin de sous-vue a lieu dans des coordonnées locales et est ensuite mis à l'échelle par la transformation parente.

Rien à voir ici, se déplacer.

Cheers,

Doug

Questions connexes