-[__NSCFString _getValue:forType:]: нераспознанный селектор отправлен экземпляру

NSMutableAttributedString *attString = [[NSMutableAttributedString alloc] initWithString:timeString];
    UIFont *font = [UIFont fontWithName:self.txtFieldForEndTime.font.familyName size:self.txtFieldForEndTime.font.pointSize / 2];

    NSDictionary *attrs = @{
                            NSFontAttributeName:font,
                            (__bridge NSString *)  kCTSuperscriptAttributeName:[string substringFromIndex:string.length - 2]
                            };
    [attString setAttributes:attrs range:[string rangeOfString:@"PM"]];

Приведенный выше код пытается использовать суперскрипт для двух последних символов AM/PM.

Но приложение вылетает из-за сообщения -[__NSCFString _getValue:forType:]: нераспознанный селектор отправлен экземпляру.

Не могли бы вы сообщить мне, что не так с этим кодом. Если у вас есть рабочий код, который надстрочный индексирует часть NSString, сообщите мне об этом.


person Krishna Kumar    schedule 03.09.2015    source источник
comment
self.txtFieldForEndTime.font.familyName =› self.txtFieldForEndTime.font.fontName? Это может быть одна проблема. Другой — это значение attrs для ключа kCTSuperscriptAttributeName. Ожидается NSNumber, а не NSString   -  person Larme    schedule 03.09.2015
comment
Проблема с kCTSuperscriptAttributeName. Шрифт работает правильно. Тогда как бы я отображал любой символ как надстрочный?   -  person Krishna Kumar    schedule 03.09.2015
comment
(__bridge NSString *) kCTSuperscriptAttributeName:[string substringFromIndex:string.length - 2] до (__bridge NSString *) kCTSuperscriptAttributeName:@(1) или (__bridge NSString *) kCTSuperscriptAttributeName:@(-1), как указано в документе.   -  person Larme    schedule 03.09.2015
comment
возможный дубликат центов надстрочного индекса в атрибутированной строке   -  person Larme    schedule 03.09.2015


Ответы (1)


Вы можете подделать верхний индекс, уменьшив размер шрифта в пунктах, и использовать атрибут NSBaselineOffsetAttributeName для перемещения текста вверх или вниз по базовой линии.

person Cyrille    schedule 03.09.2015