8

有没有办法限制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 行?

4

2 回答 2

1

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

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

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

于 2015-12-29T20:27:26.980 回答
0

用一个约束来限制行数!

只需在您的 UILabel 上添加一个 NSLayoutConstraint 并使用以下值:

  • 属性 = NSLayoutAttributeHeight(故事板中的“高度”)
  • 关系 = NSLayoutRelationLessThanOrEqual(情节提要中的“小于或等于”)
  • 常数 = 你想要的行数的高度

请参阅故事板集成:

查看故事板集成

于 2015-07-15T17:24:50.620 回答