Imaginons que j'ai un texte: «Un texte attribué à trapézoïde »Comment dessiner du texte en trapèze (ou en cercle)?
J'ai l'extension NSAttributedString, qui me retourne UIImage avec le texte attribué:
extension NSAttributedString {
func asImage() -> UIImage? {
defer {
UIGraphicsEndImageContext()
}
let size = boundingRect(with: CGSize.zero, options: [.usesLineFragmentOrigin, .truncatesLastVisibleLine], context: nil).size
UIGraphicsBeginImageContext(size)
draw(at: CGPoint.zero)
return UIGraphicsGetImageFromCurrentImageContext()
}
}
Mais cette fonction me renvoie du texte en une ligne, en raison de l'utilisation boundingRect
:
------------------------------------
|Some attributed text in trapezoid.|
------------------------------------
Si j'utiliser rect sur mesure pour l'affichage de texte, il ne va pas aider beaucoup ...
UIGraphicsBeginImageContext(CGRect(x: 0, y: 0, width: 100, height: 30))
draw(at: CGPoint.zero)
... en raison du texte sera dans le rectangle:
--------------
|Some attribu|
|ted text in |
|trapezoid. |
--------------
ce que je dois, est de dessiner le texte dans un trapézoïdal avec des positions d'angle connues (ou dans un cercle de rayon connu). Ainsi, chaque nouvelle ligne de texte devrait commencer par un petit décalage, voir par exemple:
Je veux voir quelque chose comme ça:
---------------
\Some attribut/
\ed text in/
\trapezoid/
---------
Comment puis-je obtenir ce résultat?
Cet article fournit un bon début . https://developer.apple.com/library/content/documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/CustomTextProcessing/CustomTextProcessing.html#//apple_ref/doc/uid/TP40009542-CH4-SW1 – BallpointBen
Pour les formes circulaires, je pense que voici votre solution: [Comment adapter le texte dans un cercle dans UILabel] (https://stackoverflow.com/a/22179104/2124535) Et l'utiliser pour un trapèze * ne devrait pas * (ne pas testé) être si loin car cela signifierait définir les zones exclues comme 2 triangles rectangles – nathan
Ajout à BallPointBen, peut-être quelques idées: https://stackoverflow.com/questions/26632474/uitextview-textcontainer-exclusion-path-fails-if-full-width-and -positioned-at-to – Larme