Как использовать удаленный шрифт в объекте C??? Более конкретно в UITableViewCell
cell.textLabel.text = name;
cell.detailTextLabel.text = quantity ;
cell.XXX = ??
Как использовать удаленный шрифт в объекте C??? Более конкретно в UITableViewCell
cell.textLabel.text = name;
cell.detailTextLabel.text = quantity ;
cell.XXX = ??
РЕДАКТИРОВАТЬ: этот ответ устарел с iOS 6. Пожалуйста, просмотрите более свежие ответы ниже
Не существует встроенной поддержки штриховых или подчеркивающих шрифтов. Вы должны сами рисовать линии над представлениями для этикеток.
Это глупо, так как инспектор шрифтов для IB имеет опции для установки прокрутки и подчеркивания, но они быстро игнорируются, если вы попытаетесь их установить.
это Марин, автор главы атрибутных строк в "iOS6 по учебникам".
Так как iOS6 на самом деле является нативной поддержкой для множества различных атрибутов текста, включая ударный желоб.
Вот краткий пример, который вы можете использовать для своей текстовой метки ячейки:
NSDictionary* attributes = @{
NSStrikethroughStyleAttributeName: [NSNumber numberWithInt:NSUnderlineStyleSingle]
};
NSAttributedString* attrText = [[NSAttributedString alloc] initWithString:@"My Text" attributes:attributes];
cell.textLabel.attributedText = attrText;
Это все. Удачи!
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];
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];
вот как вы зачеркнули свой лейбл. Но помните, что он работает только после 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;
NSMutableAttributedString *attributeString = [[NSMutableAttributedString alloc] initWithString:@"Your String here"];
[attributeString addAttribute:NSStrikethroughStyleAttributeName
value:@2
range:NSMakeRange(0, [attributeString length])];
yourLabel.attributedText = attributeString;
Думали ли вы о том, чтобы найти свой собственный шрифт зачеркивания и загрузить его самостоятельно? Это не так сложно, просто добавьте UIFont в ваш файл Info.plist и поместите там название шрифта. Затем вы можете вручную установить текст в этот новый зачеркнутый шрифт.
Смотрите этот пост при загрузке пользовательского шрифта.
Зарисовка возможна с помощью NSStrikeThroughAttributes
и attributedText
UILabel. Вот решение в Swift
let strikeThroughAttributes = [NSStrikethroughStyleAttributeName : 1]
let strikeThroughString = NSAttributedString(string: "Text of Label", attributes: strikeThroughAttributes)
strikeThroughLabel.attributedText = strikeThroughString
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];
Это ударит по всей ячейке. Если вам нужно, чтобы он выглядел как завершенная задача:
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), чтобы он выглядел красиво.