2010-08-15 4 views
5

From the Apple docs:Pourquoi quartz Flips 2D texte transform requis sur iPhone

Dans iOS, vous devez appliquer un flip transformer le contexte graphique actuel afin que le texte soit orienté comme indiqué sur la figure 16-1. [Une transformation par retournement] consiste à inverser l'axe des Y et à traduire le point d'origine en bas de l'écran. La liste 16-2 vous montre comment appliquer ces transformations dans la méthode drawRect: d'une vue iOS. Cette méthode appelle ensuite la même méthode MyDrawText à partir du Listing 16-1.

Pourquoi? Cela semble totalement bizarre.

Répondre

7

Lorsque j'étends dans this answer, le système de coordonnées 2D Quartz utilise le coin inférieur gauche comme (0,0), qui est le même que le système de coordonnées de fenêtre sur le Mac. L'iPhone utilise le coin supérieur gauche comme (0,0) pour sa présentation de vue, de sorte que les couches qui retournent UIViews ont leur système de coordonnées inversé par rapport à l'axe Y. Si vous utilisez les extensions NSString UIKit pour dessiner du texte dans la couche de support pour un UIView, il sera orienté correctement car ce retournement est pris en compte. Cependant, si vous utilisez le dessin de texte Quartz de niveau inférieur, vous devrez d'abord inverser le système de coordonnées autour de l'axe Y (de sorte que 0,0 soit à nouveau le bas à gauche) pour orienter les choses correctement. Normal Les principaux contextes graphiques (utilisés pour dessiner des images ou des fichiers PDF pour le stockage ou l'affichage) ne sont pas inversés. L'inverse est donc vrai. Le texte Quartz normal sera très bien rendu, mais les éléments dessinés à l'aide des extensions NSString UIKit devront d'abord avoir le système de coordonnées inversé. Cela provoque beaucoup de confusion parmi les développeurs dont les images et le texte semblent bien dessinés à l'écran, mais finissent à l'envers lorsqu'ils sont sauvegardés sur le disque.

Quant à savoir pourquoi cela a été fait, c'est n'importe qui devine. Les deux systèmes de coordonnées ont leurs avantages dans certaines circonstances. C'est une chose facile à corriger, cependant.

+0

belle réponse brad .... +1 :) –

Questions connexes