[英]Core Text - Get Pixel Coordinates from NSRange
我將如何得到CGRect
從NSRange
與核心文本呈現的文本?
我正在使用帶有NSAttributedString
Core Text。
這是一種絕對的痛苦,但可以做到。
你需要讓所有的幀使用線CTFrameGetLines()
檢查他們的字符范圍是你要找的使用范圍CTLineGetStringRange()
使用CTLineGetTypographicBounds()
找到多大的線本身就呈現為,並使用CTLineGetOffsetForStringIndex()
來確定范圍的開始/結束字符的實際位置(如果該行只是所需范圍的子范圍)。
結合所有這些並添加偏移和高度等可以得到你想要的。 請注意, CTLineGetImageBounds()
在沒有圖形上下文的情況下不起作用(而且,從我收集的內容來看,它無論如何都非常昂貴)並且不一定要解決這個問題。
首先確定您感興趣的范圍所在的線。 然后調用CTLineGetOffsetForStringIndex()
以從行的開頭獲取特定字符串位置的偏移量。 與CTLineGetImageBounds()
一起,應該可以計算范圍中第一個和最后一個字符的CGPoint
位置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.