2016-01-28 10 views
1

Как получить общее количество глифов, которые находятся в NSLayoutManager?Как подсчитать количество глифов в NSLayoutManager

Я делал курсор слой для наложения на заказ текста зрения, как это:

func moveCursorToGlyphIndex(glyphIndex: Int) { 

    // get bounding rect for glyph 
    var rect = self.layoutManager.boundingRectForGlyphRange(NSRange(location: glyphIndex, length: 1), inTextContainer: view.textContainer) 
    rect.origin.y = self.textContainerInset.top 
    rect.size.width = cursorWidth 

    // set cursor layer frame to right edge of rect 
    cursorLayer.frame = rect 
} 

Однако, я хотел убедиться, что glyphIndex не выходит за пределы. Что-то вроде этого:

if glyphIndex < self.layoutManager.glyphCount { // doesn't work 
    // ... 
} 

Я не мог найти подходящую недвижимость метода проб и ошибок, хотя и поиска в Интернете не показал SO ответов.

Я, наконец, нашел его в похоронах в документации (и теперь это кажется очевидным), но так как это заняло много времени, я решил добавить Q & A здесь.

ответ

1

Используйте numberOfGlyphs свойство, как и в

layoutManager.numberOfGlyphs 

Это показано в руководстве по программированию документации Text Layout here.