首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >新建NSAttributedString多行

新建NSAttributedString多行
EN

Stack Overflow用户
提问于 2012-11-03 14:29:32
回答 2查看 15.8K关注 0票数 7

我在UILabel工作。但setLineBreakMode已被弃用。我一直在使用NSAttributedString。但UILabel setLineBreakMode追求的是UILabel setNumberOfLines,否则就不能工作。

之前:

代码语言:javascript
复制
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之后:

代码语言:javascript
复制
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];

我想在展示之前和之后是一样的。如何显示多行?

EN

回答 2

Stack Overflow用户

发布于 2012-11-03 15:26:27

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

您的示例代码似乎没有利用任何特定于属性字符串的特性。如果你不需要带属性的字符串,只要继续使用普通字符串即可。这在iOS 6中仍然有效。

票数 4
EN

Stack Overflow用户

发布于 2012-12-31 04:40:31

使用NSLineBreakByTruncatingTail而不是UILineBreakModeTailTruncation

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13206657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档