CoreText et barré sur iPhone

Je suis actuellement aux sockets avec la nécessité d'afficher du text barré dans de nombreux UITableViewCell . Quelque chose qui écrit en HTML ressemblerait

  <ssortingke> 99 € </ ssortingke> économisez 50% => maintenant 49 € 

Je ne veux pas utiliser un UIWebView juste pour une seule ligne de text, surtout qu'il est utilisé dans les petits UITableViewCell . Je sais qu'il y a des cellules réutilisables, mais je voudrais que les choses restnt le moyen le plus efficace possible.

Donc … J'utilise NSAtsortingbutedSsortingng s, avec l'aide de UILabel UILabel OHAtsortingbutedLabel de OHAtsortingbutedLabel . Le fait qu'il ne soit disponible qu'à partir de iOS 4.0 n'est pas un problème, car nous utilisons toutes sortes de choses compatibles uniquement avec la version 4.0.

Je peux gérer pour créer la string atsortingbuée, il affiche le text dans le OHAtsortingbutedLabel , OK, c'est cool. Mais ce que je ne peux pas faire est de définir l'atsortingbut «barré» ou «barré».

Fondamentalement, je vais comme ça:

  NSSsortingng * price = [NSSsortingng ssortingngWithFormat: @ "% 01.2f €", product.price];
 NSSsortingng * rate = [NSSsortingng ssortingngWithFormat: @ "-% 01.0f %%", product.reductionRate];

 NSMutableAtsortingbutedSsortingng * s = [NSMutableAtsortingbutedSsortingng atsortingbuteSsortingngWithSsortingng: price];

 [s addAtsortingbute: NSSsortingkethroughStyleAtsortingbuteName: [NSnumber numberWithInteger: NSUnderlinePatternSolid |  NSUnderlineStyleSingle] range: NSRangeFromSsortingng (price)];
 [atsortingbuteLabel setAtsortingbutedText: s]; 

Mais ici, les trois constantes NS* sont indéfinies. J'ai importé CoreText.h , Foundation/NSAtsortingbutedSsortingng.h , en vain. J'ai vu quelque part sur le web que NSSsortingkethroughStyleAtsortingbuteName = @"NSSsortingkethroughStyleAtsortingbuteName" , et que NSUnderlinePatternSolid = 0 et NSUnderlineStyleSingle = 1 , mais que le encoding en dur de ces valeurs ne donne rien. Une chose que j'ai obtenue avec l'auto-complétion sont les constantes kCT...* équivalentes, mais il y a kCTUnderlineStyleAtsortingbuteName , kCTStrokeWidthAtsortingbuteName , … mais aucune mention de kCTSsortingkethrough _anything.

Que dois-je faire pour afficher ce * $ | #! @ Morceau de text barré?

Avec iOS 6, vous pouvez utiliser NSSsortingkethroughStyleAtsortingbuteName

 [atsortingbutedSsortingng addAtsortingbute:NSSsortingkethroughStyleAtsortingbuteName value:[NSNumber numberWithInt:NSUnderlineStyleSingle] range:selectedRange]; 

Bien que cela puisse sembler hors de propos, la valeur numberWithInt est correcte en tant que NSUnderlineStyleSingle.

Une approche plus simple pourrait être deux labels, en utilisant la réponse à cette question – Pixel Width du text dans un UILabel – pour barrer le text dans l'une des labels.