У меня есть текст с текстом и UILabel с шириной 300 со словом. Мне нужно знать, сколько строк будет, если установить мой текст на этот ярлык ... И главное, чтобы получить линию, где мир «привет». Как это сделать ? Как разбить текст на строки для некоторого кадра с некоторой шириной и получить массив этих строк? Спасибо ....iPhone: сломать текст в строке для рамки
ответ
Ну, чтобы получить количество строк, все, что вам нужно сделать, это взять вашу строку и использовать sizeWithFont:constrainedToSize:
, а затем разделить высоту на свойство lineHeight вашего лейбла UIFont.
Что касается получения отдельных строк, я не уверен, есть ли способ сделать это с Objective-C, поэтому вам, возможно, придется использовать Core Text.
Создайте NSAttributedString из своей строки.
Установите шрифт.
Создать CTFrameSetter из NSAttributedString
Создать CTFrame
Получить CFArrayRef линий от CTFrame использованием CTFrameGetLines
Перечислить через массив и найти свое слово.
Если вы используете быстрое перечисление, вам потребуется счетчик, чтобы отслеживать номер строки.
Пример линии нарушения части:
CTFontRef myFont = CTFontCreateWithName([font fontName], [font pointSize], NULL);
NSMutableAttributedString *attStr = [[NSMutableAttributedString alloc] initWithString:string];
[attStr addAttribute:(NSString *)kCTFontAttributeName value:(id)myFont range:NSMakeRange(0, attStr.length)];
CTFramesetterRef frameSetter = CTFramesetterCreateWithAttributedString((CFAttributedStringRef)attStr);
CGPathRef path = [[UIBezierPath bezierPathWithRect:textFrame] CGPathRef];
CTFrameRef frame = CTFramesetterCreateFrame(frameSetter, CFRangeMake(0, 0), path, NULL);
NSArray *lines = (NSArray *)CTFrameGetLines(frame);
Вы должны добавить соответствующие релизы в зависимости от того, что вы используете ARC или нет.
Обратите внимание, что переменная «шрифт» является UIFont. Если вы хотите создать шрифт, вам не нужно использовать эти методы fontName и pointSize.
Также обратите внимание: это массив объектов CTLineRef. Используйте CTLineGetStringRange
, чтобы получить CFRange всей строки. Затем используйте это, чтобы создать подстроку из вашего NSString, чтобы выполнить поиск.
NSUInteger idx = 0;
for (CTLineRef line in lines) {
CFRange lineRange = CTLineGetStringRange(line);
NSRange range = NSMakeRange(lineRange.location, lineRange.length);
NSString *lineString = [string substringWithRange:range];
NSRange searchResultRange = [lineString rangeOfString:@"hello"];
if (searchResultRange.location != NSNotFound) {
// MATCH!
break;
}
idx++;
}
- 1. Рамки для картин - iPhone
- 2. аудио рамки в iPhone
- 3. Лучшие рамки для iPhone для 2D-платформ
- 4. Зависимость рамки для инъекций для iPhone
- 5. iPhone: настройка рамки рамки ячейки таблицы таблицы
- 6. iPhone corelocation рамки ограничение?
- 7. iPhone рамки пути?
- 8. HTML: Как заставить длинный текст сломать
- 9. Текст Gui без рамки рамки фона?
- 10. Статический текст wx.StaticText выходит за рамки рамки
- 11. iPhone OpenGl визуализировать текст
- 12. Сбрасывающие рамки для iPhone 3.0 не работают?
- 13. ffmpeg для извлечения рамки из видеокамеры iPhone
- 14. Настройки стилей iPhone для статической библиотеки/рамки
- 15. iPhone игры программирования: Рамки для этой игры?
- 16. Рамки, используемые для создания приложений, обрабатывающих текст
- 17. сломать два для петель
- 18. Как сломать текст на гибком дисплее, когда текст длинный?
- 19. для каждого ... сломать
- 20. рамки Linkedin-iPhone не работает
- 21. HTML Строка сломать
- 22. Анимированный участок рамки изображения (iPhone)
- 23. Пользовательский UITableView текст для iPhone
- 24. iPhone Изменение ориентации рамки зрения
- 25. Текст обрезки в строке
- 26. Выделить текст в iPhone
- 27. XSLT - Как я могу сломать длинный текст в fo: block
- 28. Рамки для хранения магазина
- 29. Найти текст в строке
- 30. Неверный текст в строке
Есть примеры? Или, пожалуйста, напишите код кода, пожалуйста? – Jim
Не думал, что вы хотите пойти по тексту основного текста, поэтому я не добавил код. Я обновил свой ответ. –
Я ценю за ваш ответ ... Это именно то, что мне нужно ... Большое спасибо ... – Jim