En tant qu'arrière-plan pour l'une des vues de mon application, je voudrais dessiner une bordure rectangulaire assez simple juste à l'intérieur de son cadre. Ce serait essentiellement un dégradé rectangulaire: une ligne noire entourant le cadre, devenant blanche à environ 10-20 pixels. Malheureusement, autant que je sache, Core Graphics ne fournit pas de dégradés rectangulaires (CGGradient
ou CGShading
). Je me demande donc quelle serait la meilleure approche.La meilleure façon d'accomplir ce dessin avec Quartz 2D/Core Graphics?
Deux qui se produisent pour moi:
- dessiner une série de rectangles concentriques, chacun de couleur plus claire ultérieurement, et encadré par 1px de chaque côté. Je ne peux pas penser à une approche plus simple, mais je dois faire tous les calculs de gradient moi-même, et il pourrait y avoir beaucoup d'opérations graphiques. Utiliser
CGGradient
en mode linéaire, une fois de chaque côté. Mais pour que cela fonctionne, je pense que je devrais d'abord mettre en place une zone de détourage trapézoïdale pour chaque côté, afin que les dégradés soient coupés en onglet.
On dirait que il devrait être un moyen d'utiliser semblent chemin caresser pour le faire, mais il n'a pas comme il y a un moyen de définir un modèle qui est orienté différemment de chaque côté.
L'utilisation d'un CGGradient pour chaque bord sera plus rapide, mais vous pouvez utiliser un UIImage comme cache si c'est encore trop lent (attirer l'UIImage une fois, puis dessiner l'image sur la vue en cas de besoin) – rpetrich
Oui , Je pense que peu importe l'approche que je prends au dessin, la mise en cache d'une image avec les résultats va probablement être une bonne idée. Mais j'aime bien l'idée de faire le dessin procédural, plutôt que d'expédier un PNG dans l'application. –