2010-08-09 3 views
2

Je suis en train d'obtenir ma tête autour de l'utilisation QuartzCore pour rendre le texte semi-complexes/gradient/image composites UITableViewCell. Heureusement, Opacity me permet de créer visuellement la vue, puis de cracher le code source pour le toucher au cacao. Le problème est, Opacité suppose que le code est en cours d'exécution sur iOS 4, ce qui est un problème si vous voulez dessiner des vues Quartz sur un iPad. Pour moi, la méthode incriminée est CGPathGetPathBoundingBox ... est-ce que quelqu'un m'indiquerait une alternative ou une solution de contournement appropriée à cette méthode (vraisemblablement simple)?Alternative à CGPathGetPathBoundingBox() pour iPad (iOS 3.2)

Si vous tenez à avoir un certain contexte (sans jeu de mots), ici vous allez:

transform = CGAffineTransformMakeRotation(1.571f); 
tempPath = CGPathCreateMutable(); 
CGPathAddPath(tempPath, &transform, path); 
pathBounds = CGPathGetPathBoundingBox(tempPath); 
point = pathBounds.origin; 
point2 = CGPointMake(CGRectGetMaxX(pathBounds), CGRectGetMinY(pathBounds)); 
transform = CGAffineTransformInvert(transform); 

Répondre

3

L'alternative est de iterate on the points of the path et notez l'extrême gauche, extrême droite, le plus loin possible et basse possible les coordonnées du points d'ancrage vous-même, puis travailler l'origine et la taille de ces chiffres.

Vous devez placer ceci dans une fonction et l'appeler comme MyPathGetPathBoundingBox, et l'utiliser jusqu'à ce que vous supprimiez le support pour iOS 3.x. Cela rendra facile de passer à CGPathGetPathBoundingBox une fois que vous le pouvez.

+0

Je vois une autre fonction qui est similaire dans la description, mais je ne suis pas sûr si elle est identique dans la fonctionnalité ... CGPathGetBoundingBox ... Je ne peux pas tout à fait dire la différence entre cela et CGPathGetPathBoundingBox. –

+5

Greg Combs: La différence est que 'CGPathGetBoundingBox' prend en compte les points de contrôle, donc pour un segment de courbe, toute la zone couverte par la courbe contribuera à la boîte englobante. 'CGPathGetPathBoundingBox' ne considère que les points d'ancrage, donc les courbes sont mesurées comme si elles étaient droites. En tant que cas pathologique, un cercle constitué de deux segments curveto n'aurait aucune zone (puisqu'il n'y a qu'une ligne droite entre les deux points d'ancrage), alors qu'un polygone (rien que des lineto) aurait une surface. –

+2

Greg Combs: Ou, visuellement: http://i.imgur.com/cF7SS.png –

Questions connexes