限制NSAttributedString行数

时间:2015-02-10 17:29:01

标签: ios nsattributedstring nsparagraphstyle

有没有办法限制 NSAttributedString 中段落中的行数?
我在 NSAttributedString 中追加两个字符串,我希望它们最多为3行,第一个字符串为1-2行,如果需要则截断。第二个字符串应该始终在最后一行上 像:

this is my first string
if its too long i't will get trun...
But this is my second string

我所做的是:

    // First string
    NSAttributedString *first = [[NSAttributedString alloc] initWithString:@"this is my first string if its too long i't will get trunticated"
                                                               attributes:@{NSForegroundColorAttributeName:[UIColor redColor],
                                                                            NSFontAttributeName:[UIFont fontWithName:@"HelveticaNeue-Light" size:17.0]];
    [str appendAttributedString:first];

    // New line
    [str appendAttributedString:[[NSAttributedString alloc] initWithString:@"\n"]];

    // Add photo count
    NSAttributedString *second = [[NSAttributedString alloc] initWithString:@"But this is my second string"
                                                                attributes:@{NSForegroundColorAttributeName:[UIColor redColor],
                                                                             NSFontAttributeName:[UIFont fontWithName:@"HelveticaNeue-Light" size:14.0]}];
    [str appendAttributedString:second];

但结果是:

this is my first string
if its too long i't will get
trunticated

第一个字符串占用前3行并将第二个字符串从标签中推出 如何将第一个字符串段落限制为2行?

2 个答案:

答案 0 :(得分:1)

您可以重复使用大写和较大宽度的图形组件(UITextView或UITextField)可以处理的字母数量来查看。比,使用:

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{}

检查每个输入,金额是否足够,或者是否仍可用于更多字母。创建一个字符限制,并在每次调用此方法时减少它。

答案 1 :(得分:0)

使用一个约束限制行数!

只需在UILabel上添加NSLayoutConstraint,其值如下:

  • attribute = NSLayoutAttributeHeight(故事板中的“高度”)
  • relation = NSLayoutRelationLessThanOrEqual(故事板中的'小于或等于')
  • 常数=你想要的行数高度

参见Storyboard集成:

See storyboard integration