UILabel Bold / Выделить все вхождения SubString

У меня есть несколько UILabels внутри ячейки Custom Table. Эти ярлыки содержат разнообразный текст или различную длину.

Поскольку это означает, что UILabel Subclassed позволяет мне реализовать эти методы

- (void)boldRange:(NSRange)range { if (![self respondsToSelector:@selector(setAttributedText:)]) { return; } NSMutableAttributedString *attributedText; if (!self.attributedText) { attributedText = [[NSMutableAttributedString alloc] initWithString:self.text]; } else { attributedText = [[NSMutableAttributedString alloc]initWithAttributedString:self.attributedText]; } [attributedText setAttributes:@{NSFontAttributeName:[UIFont boldSystemFontOfSize:self.font.pointSize]} range:range]; self.attributedText = attributedText; NSLog(@"%@", NSStringFromRange(range)); } - (void)boldSubstring:(NSString*)substring { NSRange range = [self.text rangeOfString:substring]; [self boldRange:range]; } 

Это позволяет мне называть [cell.StoryLabel boldSubstring:@"test"]; который будет BOLD первое вхождение слова «тест».

То, что мне нужно, – это возможность либо создавать новые методы подкласса, либо расширять те, которые у меня уже есть, чтобы я мог заменить ВСЕ вхождения указанного слова в метку.

Я рассмотрел ряд методов, включая сторонние структуры. Беда в том, что это процесс обучения для меня. Мне было бы гораздо выгоднее, если бы я попытался завершить это сам.

Заранее спасибо!

rangeOfString возвращает первое вхождение, это нормальное поведение. Из документа Doc :

Находит и возвращает диапазон первого вхождения данной строки в приемнике.

Вы можете использовать NSRegularExpression и использовать matchesInString:options:range чтобы получить NSArray из NSTextCheckingResult (у которого есть свойство NSRange ), используйте for loop чтобы выделить его.

Это должно сделать трюк:

 - (void)boldSubstring:(NSString*)substring { if (![self respondsToSelector:@selector(setAttributedText:)]) { return; } NSError *error; NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern: substring options:NSRegularExpressionCaseInsensitive error:&error]; if (!error) { NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:[self text]]; NSArray *allMatches = [regex matchesInString:[self text] options:0 range:NSMakeRange(0, [[self text] length])]; for (NSTextCheckingResult *aMatch in allMatches) { NSRange matchRange = [aMatch range]; [attributedString setAttributes:@{NSFontAttributeName:[UIFont boldSystemFontOfSize:self.font.pointSize]} range: matchRange]; } [self setAttributedText:attributedString]; } } 
  • Найдите нижнее положение UILabel, чтобы можно было создать вторую UILabel
  • UIKit нарисовать текст со шрифтом скрипта, который больше кадра
  • Анимация таймера в UILabel
  • Пользовательский прототип Cell с Parse - Swift
  • Изменить дату в UILabel при нажатии следующей и предыдущей UIButton
  • Внешний вид UILabel в Monotouch
  • Текст, присвоенный UILabel, не может иметь несколько строк, если вы изменяете атрибут смещения базовой линии
  • Размер шрифта UILabel не подходит для жирных шрифтов
  • Изменение цвета фона UILabel
  • Как написать пользовательский класс UILabel
  • Как вставить символы в строку в определенном формате?
  • Interesting Posts

    Метод WKWebView (бета) takeSnapshot, как реализовать?

    Deinit UITabBarController после представления нового ViewController

    Ошибка доступа к iOS 9 Facebook

    Ошибка Visual Studio Cordova «Не найдено подходящих профилей обеспечения: не найдено профилей инициализации, соответствующих идентификатору пакета».

    Не удается редактировать LaunchScreen.storyboard в Visual Studio

    Последний элемент в вертикальном flexbox на Safari для iOS обрезается в ландшафтном режиме

    Новый быстрый способ для Base64EncodedStringFromData Objective-C

    Наблюдаемый для селектора – RxSwift

    Swift 2-мерный словарь любых объектов

    Как передать данные в другое представление

    Развертывание значений SCNVector3 / SCNVector4 для печати?

    DropboxSDK: ошибка чтения сохраненного значения keychain (-34018)

    Могу ли я сделать это с помощью классов автозапуска / размера?

    iOS, Swift, UIImagePicker позволяет редактировать инструмент обрезки, снимает прозрачность. Есть ли исправление?

    Быстрое перечисление перечислений

    Давайте будем гением компьютера.