2016-02-28 2 views
0

Как я могу подсчитать количество страниц текста, если у меня очень длинный NSTextStorage, и я знаю CGSize для NSTextContainer? Есть ли стандартная процедура для этой вещи или какой-либо способ подсчета ее динамически? Я не могу найти хороший учебник, чтобы сделать iBooks как книгу из необработанного текста с пользовательскими шрифтами (мне нужно нарисовать тексты 20-50 страниц).UIPageViewController/TextKit количество страниц

ответ

0

Я нашел хороший способ подсчета количества страниц с помощью NSLayoutManager от TextKit. Просто посчитайте страницы, когда я создаю NSTextContainers

var range = NSMakeRange(0, 0) 
    var containerIndex : UInt = 0 
    var pageIndex : UInt = 1 
    while(NSMaxRange(range) < layoutManager.numberOfGlyphs) { 
     let textViewRect = self.frameForViewAtIndex(containerIndex) 
     let containerSize = CGSizeMake(textViewRect.size.width, textViewRect.size.height - 16) 
     let textContainer = NSTextContainer(size: containerSize) 
     layoutManager.addTextContainer(textContainer) 

     let textView = UITextView(frame: textViewRect, textContainer: textContainer) 
     self.addSubview(textView) 
     range = (layoutManager.glyphRangeForTextContainer(textContainer)) 

     containerIndex++; 
     if containerIndex%columnCount == 0 { pageIndex++ } 
    } 

ColumnCount это число столбцов, если вы будете использовать многоколоночном макет

frameForViewAtIndex возвращает CGRect для текущего TextView внутри Scrollview

Смежные вопросы