我需要查看多行标签的文字。有办法吗? 任何建议都会有很大帮助。谢谢,
答案 0 :(得分:3)
如果你想用UILabel for iPhone做你不能:(
所以有三种方式:
(最简单)使用UIWebView:
// set html header with styles, you can certainly use some other attributes
NSString * htmlWrap = @"<html><head><style>body{text-align:left; background-color:transparent; color:black; font-weight:bold; text-decoration:line-through; font-size:%dpt}`</style></head>`<body>%@</body`></html>";
NSStrring * myText = @"My sample strikethrough text";
webView.backgroundColor = [UIColor clearColor];
[webView setOpaque:NO];
NSString * htmlText = [NSString stringWithFormat:htmlWrap, 12, myText];
[webView loadHTMLString:htmlText baseURL:nil];
使用unicode结合变音符号(这适用于任何对象标签,文本字段等)。
“长笔画叠加”(U + 0336)或
在“之前结合低线”(U + 0332)
你的字符串中的每个字符。使用
-(void)getCharacters:(unichar *)buffer range:(NSRange)aRange
从字符串创建unichar数组(分配字符串长度的双倍大小),然后重新排列数组并在每个字符前添加U + 0336或U + 0332,然后使用
将unichar数组转换回NSString -(id)initWithCharacters:(const unichar *)characters length:(NSUInteger)length
但在大多数情况下这看起来很糟糕
在上下文中手工绘制。
答案 1 :(得分:2)
这适用于单行标签。
@interface UILabelStrikeThrough : UILabel {
}
@end
@implementation UILabelStrikeThrough
- (void)drawRect:(CGRect)rect {
CGContextRef c = UIGraphicsGetCurrentContext();
CGFloat black[4] = {0.0f, 0.0f, 0.0f, 1.0f};
CGContextSetStrokeColor(c, black);
CGContextSetLineWidth(c, 2);
CGContextBeginPath(c);
CGFloat halfWayUp = (self.bounds.size.height - self.bounds.origin.y) / 2.0;
CGContextMoveToPoint(c, self.bounds.origin.x, halfWayUp );
CGContextAddLineToPoint(c, self.bounds.origin.x + self.bounds.size.width, halfWayUp);
CGContextStrokePath(c);
[super drawRect:rect];
}
@end
答案 2 :(得分:2)