讓我們想象一下,我有一些文字:「在梯形部分歸因文字」如何繪製梯形文字(或圓圈)?
我有NSAttributedString擴展,它返回我的UIImage,與歸屬文字:
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()
}
}
但這個函數返回我的文字在一行中,因爲使用boundingRect
的,:
------------------------------------
|Some attributed text in trapezoid.|
------------------------------------
如果我想使用的繪製文本定製矩形就會忍不住多...
UIGraphicsBeginImageContext(CGRect(x: 0, y: 0, width: 100, height: 30))
draw(at: CGPoint.zero)
...因爲文本將在矩形:
--------------
|Some attribu|
|ted text in |
|trapezoid. |
--------------
我需要什麼,是繪製文本的梯形與已知的角落位置(或已知半徑的圓)。因此,文本的每一新行應該有一點偏移量,請看例子開始:
所以我希望看到這樣的事情:
---------------
\Some attribut/
\ed text in/
\trapezoid/
---------
我怎樣才能實現這個結果?
本文提供了一個良好的開端。 https://developer.apple.com/library/content/documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/CustomTextProcessing/CustomTextProcessing.html#//apple_ref/doc/uid/TP40009542-CH4-SW1 – BallpointBen
對於基於圓形的形狀,我認爲這裏是你的解決方案:[如何在UILabel中將文本放入一個圓圈](https://stackoverflow.com/a/22179104/2124535)並將它用於梯形*不應*(未測試)因爲這意味着將排除的區域定義爲2個直角三角形 – nathan
添加到BallPointBen中,也許有一些想法:https://stackoverflow.com/questions/26632474/uitextview-textcontainer-exclusion-path-fails-if-full-width-and -position-at-to-to- – Larme