2011-07-26 40 views
1

我想獲得最接近字符的索引到一個點。Objective C - 核心文本在位置查找索引?

下面的代碼工作得非常好,因爲我的文本對齊方式設置爲左側,只要我將它改爲右側或居中就會給我錯誤的索引。在獲得最接近某個點的索引的同時考慮文本對齊的解決方案是什麼?

CTLineRef line = (CTLineRef)[lines objectAtIndex:i]; 
index = CTLineGetStringIndexForPosition(line, point); 

編輯:

我的文字對齊方式是通過添加具有它textAlignment設置爲kCTCenterTextAlignment

+0

hey aryaxt,你是如何實現下面給出的解決方案?我假設它是像「CTLineGetStringIndexForPosition(行,CGPointMake(originins [i] .x + point.x,point.y));」,但這對我不起作用。你有不同的做法嗎? –

回答

4

點是相對於生產線的原點(其與定位變化的段落樣式做),因此您必須使用CTFrameGetLineOrigins並將該線的原點的x值添加到該點的x值。

+0

一如既往,偉大的答案,謝謝。我只是好奇你怎麼對核心文本有這麼多的知識?是否有與您正在處理的核心文本相關的特定項目? – aryaxt

+0

我認爲這個點是一個絕對位置,所以我們應該從該點的x值減去該線的原點的x值?至少在我的情況下,這是減法。 – giftederic