Зачеркнутый шрифт в объективе C - PullRequest
19 голосов
/ 22 марта 2010

Как я могу использовать зачеркнутый шрифт в цели C ??? Более конкретно в UITableViewCell

cell.textLabel.text = name;
cell.detailTextLabel.text = quantity ;
cell.XXX = ??

Ответы [ 10 ]

50 голосов
/ 31 декабря 2012

это Марин, автор главы об атрибутных строках в "iOS6 by Tutorials".

Начиная с iOS6, на самом деле есть встроенная поддержка множества различных текстовых атрибутов, включая зачеркнутый.

Вот краткий пример, который вы можете использовать для текстовой метки вашей ячейки:

NSDictionary* attributes = @{
  NSStrikethroughStyleAttributeName: [NSNumber numberWithInt:NSUnderlineStyleSingle]
};

NSAttributedString* attrText = [[NSAttributedString alloc] initWithString:@"My Text" attributes:attributes];
cell.textLabel.attributedText = attrText;

Вот и все. Удачи!

9 голосов
/ 22 марта 2010

РЕДАКТИРОВАТЬ: Этот ответ устарел с iOS 6. Пожалуйста, посмотрите более свежие ответы ниже

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

Это глупо, так как инспектор шрифтов для IB имеет опции для установки зачеркивания и подчеркивания, но они быстро игнорируются, если вы пытаетесь их установить.

5 голосов
/ 07 ноября 2012

1 - получить размер текста, который необходимо зачеркнуть

CGSize expectedLabelSize = [string sizeWithFont:cell.titleLabel.font constrainedToSize:cell.titleLabel.frame.size lineBreakMode:UILineBreakModeClip];

2-Создать строку и добавить ее в текст

UIView *viewUnderline = [[UIView alloc] init];
viewUnderline.frame = CGRectMake(20, 12, expectedLabelSize.width, 1);
viewUnderline.backgroundColor = [UIColor grayColor];
[cell addSubview:viewUnderline];
[viewUnderline release]; 
4 голосов
/ 12 августа 2013

вот как вы зачеркнули свой ярлык. Но помните, это работает только после ios 6.0

NSNumber *strikeSize = [NSNumber numberWithInt:2]; 

NSDictionary *strikeThroughAttribute = [NSDictionary dictionaryWithObject:strikeSize 
forKey:NSStrikethroughStyleAttributeName];

NSAttributedString* strikeThroughText = [[NSAttributedString alloc] initWithString:@"Striking through it" attributes:strikeThroughAttribute];

strikeThroughLabel.attributedText = strikeThroughText;
4 голосов
/ 31 августа 2011
CGRect frame = sender.titleLabel.frame;
UILabel *strikethrough = [[UILabel alloc] initWithFrame:frame];
strikethrough.opaque = YES;
strikethrough.backgroundColor = [UIColor clearColor];
strikethrough.text = @"------------------------------------------------";
strikethrough.lineBreakMode = UILineBreakModeClip;
[sender addSubview:strikethrough];
2 голосов
/ 13 июля 2015
NSMutableAttributedString *attributeString = [[NSMutableAttributedString alloc] initWithString:@"Your String here"];
[attributeString addAttribute:NSStrikethroughStyleAttributeName
                    value:@2
                    range:NSMakeRange(0, [attributeString length])];
yourLabel.attributedText = attributeString;
1 голос
/ 16 декабря 2014

Зачеркивание возможно при использовании NSStrikeThroughAttributes и attributedText UILabel. Вот решение в Swift

    let strikeThroughAttributes = [NSStrikethroughStyleAttributeName : 1]
    let strikeThroughString = NSAttributedString(string: "Text of Label", attributes: strikeThroughAttributes)
    strikeThroughLabel.attributedText = strikeThroughString
1 голос
/ 31 августа 2011

Задумывались ли вы о том, чтобы найти свой зачеркнутый шрифт и загрузить его самостоятельно?Это не так сложно, просто добавьте UIFont в файл Info.plist и вставьте туда название шрифта.Затем вы можете вручную установить текст для этого нового зачеркнутого шрифта.

См. Этот пост о загрузке пользовательского шрифта.

Могу ли я встроить собственный шрифт ...

0 голосов
/ 04 марта 2015

Это пробьет всю клетку.Если вам нужно, чтобы это выглядело как выполненное задание:

CGSize size = cell.contentView.frame.size; // you'll draw the line in whole cell.

UIView *line = [[UIView alloc] initWithFrame:CGRectMake(15,size.height / 2,size.width - 30, 1)];
line.backgroundColor = [UIColor grayColor]; // set your preferred color
[cell addSubview:line];

Вы можете указать другое значение в CGRectMake вместо 15 - это смещение на X. В этом случае вам лучше уменьшить ширину на удвоенное значение(в моем случае это 15 * 2 = 30), чтобы это выглядело хорошо.

0 голосов
/ 01 октября 2014
UIView *strikeView = [[UIView alloc] initWithFrame:ccr(0, 0, myLabel.bounds.size.width, 1)];
strikeView.backgroundColor = [UIColor redColor];
strikeView.center = ccp(myLabel.bounds.size.width/2, myLabel.bounds.size.height/2);
[myLabel addSubview:strikeView];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...