7

我曾在 UILabel 工作过。但是 setLineBreakMode 已被弃用。我一直在使用 NSAttributedString。但是 UILabel setLineBreakMode 是在那之后 UILabel setNumberOfLines else 不起作用。

前:

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(42.0f, 10.0f, 275.0f, 50.0f)];
label.text = @"XXXXXX";
memoLabel.textAlignment = UITextAlignmentLeft;
memoLabel.numberOfLines = 2;
memoLabel.lineBreakMode = UILineBreakModeTailTruncation;
memoLabel.font = [UIFont systemFontOfSize:11];
memoLabel.backgroundColor = [UIColor clearColor];

IOS 6 之后:

NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping;
paragraphStyle.alignment = NSTextAlignmentLeft;
NSAttributedString *string
    = [[NSAttributedString alloc] initWithString:text
                                  attributes:[NSDictionary
                                              dictionaryWithObjectsAndKeys:[UIFont systemFontOfSize:11],
                                              NSFontAttributeName,
                                              paragraphStyle, NSParagraphStyleAttributeName,nil]];
[paragraphStyle release];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(42.0f, 10.0f, 275.0f, 50.0f)];
label.attributedText = string;
[string relase];

我想在展示前后都一样。如何显示多行?

4

2 回答 2

4

lineBreakMode属性在 iOS 6 中并未被弃用。它只是更改了常量的名称。旧的常量已被弃用,但仍然可用。即使您正在部署到较旧的 iOS,您也可以使用新常量,因为常量只是枚举值。旧名称和新名称具有相同的值。所以,只需设置memoLabel.lineBreakMode = NSLineBreakByTruncatingTail.

您的示例代码似乎没有利用任何属性字符串特定功能。如果您不需要属性字符串,请继续使用纯字符串。这仍然适用于 iOS 6。

于 2012-11-03T07:26:27.093 回答
2

使用NSLineBreakByTruncatingTail代替UILineBreakModeTailTruncation

于 2012-12-30T20:40:30.777 回答