В настоящее время я борюсь с необходимостью отображения зачеркнутого текста во многих UITableViewCell
с.То, что написано на HTML, будет выглядеть как
<strike>€99</strike> save 50% => now €49
. Я не хочу использовать UIWebView
только для одной строки текста, особенно если оно используется в небольших UITableViewCell
с.Я знаю, что есть многократно используемые ячейки и все такое, но я бы хотел, чтобы все было как можно более эффективным способом памяти.
Итак ... Я использую NSAttributedString
s с помощью AliSoftware UILabel
-замена OHAttributedLabel
.Тот факт, что он доступен только начиная с iOS 4.0, не проблема, поскольку мы используем все виды вещей, только 4.0-совместимых.
Мне удается создать атрибутивную строку, она отображает текст в OHAttributedLabel
,ОК, это круто.Но то, чего я не могу достичь, это установить атрибут «зачеркнутый» или «зачеркнутый».
По сути, я иду так:
NSString *price = [NSString stringWithFormat:@"%01.2f €", product.price];
NSString *rate = [NSString stringWithFormat:@" -%01.0f%%", product.reductionRate];
NSMutableAttributedString *s = [NSMutableAttributedString attributedStringWithString:price];
[s addAttribute:NSStrikethroughStyleAttributeName value:[NSNumber numberWithInteger:NSUnderlinePatternSolid | NSUnderlineStyleSingle] range:NSRangeFromString(price)];
[attributedLabel setAttributedText:s];
Но здесь три NS*
константыне определены.Я импортировал CoreText.h
, Foundation/NSAttributedString.h
, но безрезультатно.Я где-то в сети видел, что NSStrikethroughStyleAttributeName = @"NSStrikethroughStyleAttributeName"
и NSUnderlinePatternSolid = 0
и NSUnderlineStyleSingle = 1
, но жесткое кодирование этих значений ничего не дает.Одна вещь, которую я получил при автозаполнении, это эквивалент kCT...*
констант, но есть kCTUnderlineStyleAttributeName
, kCTStrokeWidthAttributeName
, ... но нет упоминания о kCTStrikethrough
_anything.
Что мне делать, чтобыотобразить этот * $ | #! @ фрагмент зачеркнутого текста?