我正在做一个处理当天任务的项目,比如记笔记 所以我分配了每日任务,当任务完成时,我希望通过任务名称进行一次线击 我正在寻找具有此删除线但却失败的相应字体系列 所以请为我建议一个.ttf字体名称,这样我就可以在我的项目中使用该字体来满足我的要求。
答案 0 :(得分:5)
****** OPTION 1 ******
如果您想在多行模式中浏览文字:使用 TTTAttributedLabel
创建新的TTTAttributedLabel.h和TTTAttributedLabel.m文件(不是来自GITHUB,因为我调整了单/双删除线功能)
http://www.2shared.com/file/Z_qZpWVd/TTTAttributedLabel.html
http://www.2shared.com/file/xXjmC-1M/TTTAttributedLabel.html
你需要一个删除线标签 - 使用 TTTAttributedLabel 代替 UILabel 。
设置删除线 =
TTTAttributedLabel *labelName = [[TTTAttributedLabel alloc] init];
labelName.linkAttributes = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES]
forKey:@"TTTCustomStrikeOut"];
设置 doublethrough =
TTTAttributedLabel *labelName = [[TTTAttributedLabel alloc] init];
labelName.linkAttributes = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES]
forKey:@"TTTCustomDoubleStrikeOut"];
添加标签文本应该被删除的范围+提供可点击的链接(无,无链接):
//set link to nil, to NOT-have a link on taping on this label.
[labelName addLinkToURL:nil withRange:NSMakeRange(0, [labelName.text length])];
P.S。 - 要正确地重新定位双删除线 - 请编辑TTTAtributedLabel.m文件,在483,484和489,490行(目前我改变上线y-2并从中心更低y + 2.调整以获得更好的结果。)
****** OPTION 2 ******
将所有字符串符号转换为特殊的透视字符。
您可以从此主页获取这些内容:http://adamvarga.com/strike/
然后你可以 - 例如,在语言文件中放置必要的符号翻译:
“A”=“A̶”; “B”=“B̶”; “C”=“C̶”; “D”=“D̶”; “E”=“E̶”; “F”=“F̶”; “G”=“G̶”; “H”=“H̶”; ....
并使用此函数将普通文本字符串转换为删除字符串:
- (NSString *)returnStrikedOutTextFromString:(NSString *)mString
{
NSString * mNewString = @"";
for(int i = 0; i<[mString length]; i++)
{
mNewString = [NSString stringWithFormat:@"%@%@",mNewString,
NSLocalizedString([[mString substringToIndex:i+1] substringFromIndex:i],nil)];
}
return mNewString;
}
例如:
textLabel.text = [self returnStrikedOutTextFromString:@"string text"];
****选项3 ****
我还建议尝试这里提到的这个UILabel子类:Underline text in UIlabel
希望有所帮助!
答案 1 :(得分:2)
使用下面的代码来划线:
NSString *string = Yourlabel.text;
CGSize stringSize = [string sizeWithFont:Yourlabel.font];
CGRect buttonFrame = Yourlabel.frame;
CGRect labelFrame = CGRectMake(buttonFrame.origin.x ,
buttonFrame.origin.y + stringSize.height/2,
stringSize.width, 2);
UILabel *lineLabel = [[UILabel alloc] initWithFrame:labelFrame];
lineLabel.backgroundColor = [UIColor blackColor];
[CellView addSubview:lineLabel];
答案 2 :(得分:2)
如果你使用另一个简单的想法,它的工作很好,也很容易....
只需在你的标签和标签上添加另一个标签
UILabel *canceledlable = [[UILabel alloc] initWithFrame:yourmainlableframe];
canceledlable.opaque = YES;
canceledlable.backgroundColor = [UIColor clearColor];
canceledlable.text = @"------------------------------------------------";
canceledlable.lineBreakMode = UILineBreakModeClip;
[self.view addSubview: canceledlable];
这里哪个lable想要你strikethrough字体只是给它的框架到这里并在你的任务完成后添加这个标签 希望,这有助于你...... :)
答案 3 :(得分:1)
尝试使用TTTAttributedLabel添加此内容。
@implementation TTTAttributedLabel (Additions)
- (void)setStrikeThroughOn:(BOOL)isStrikeThrough {
NSString* text = self.text;
[self setText:text afterInheritingLabelAttributesAndConfiguringWithBlock:^ NSMutableAttributedString *(NSMutableAttributedString *mutableAttributedString) {
NSRange strikeRange = [[mutableAttributedString string] rangeOfString:text options:NSCaseInsensitiveSearch];
[mutableAttributedString addAttribute:kTTTStrikeOutAttributeName value:[NSNumber numberWithBool:isStrikeThrough] range:strikeRange];
return mutableAttributedString;
}];
// must trigger redraw
[self setNeedsDisplay];
}
@end
答案 4 :(得分:0)
在斯威夫特,
let label = UITextView(frame: CGRectMake(0, 0, 300, 100))
let strikeThroughAttributes = [NSStrikethroughStyleAttributeName: NSUnderlineStyle.StyleSingle.rawValue]
let labelString = NSAttributedString(string: "Hello, playground", attributes: strikeThroughAttributes)
label.attributedText = labelString