Ограничить NSAttributedString количество строк

Есть ли способ ограничить количество строк в абзаце в 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 ответа

Вы можете посчитать количество букв, которые ваш графический компонент (UITextView или UITextField) может обработать, используя прописные и большие буквы, чтобы увидеть это. Чем использовать:

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

проверять каждый ввод, если суммы достаточно, или если она еще доступна для большего количества букв. Создайте ограничение на число символов и уменьшайте его каждый раз, когда вызывается этот метод.

Ограничьте количество строк одним ограничением!

Просто добавьте NSLayoutConstraint в UILabel со следующими значениями:

  • attribute = NSLayoutAttributeHeight ('Высота' в раскадровке)
  • отношение = NSLayoutRelationLessThanOrEqual ("меньше или равно" в раскадровке)
  • константа = высота-для-количества строк-вы хотите

См. Интеграция раскадровки:

Смотрите раскадровку

Другие вопросы по тегам