Let's imagine that I have some text: "Some attributed text in trapezoid."
I have NSAttributedString extension, which returns me UIImage with attributed text:
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()
}
}
But this function returns me text in one line, because of using boundingRect
:
------------------------------------
|Some attributed text in trapezoid.|
------------------------------------
If I would use custom rect for drawing text it won't help much...
UIGraphicsBeginImageContext(CGRect(x: 0, y: 0, width: 100, height: 30))
draw(at: CGPoint.zero)
...because of text will be in rectangle:
--------------
|Some attribu|
|ted text in |
|trapezoid. |
--------------
What i need, is to draw text in a trapezoid with known corner positions (or in a circle with known radius). So each new line of text should start with a little offset, see example:
So I want to see something like that:
---------------
\Some attribut/
\ed text in /
\trapezoid/
---------
How can I achieve this result?