Swift: string - вычисление позиции первого символа на высоте? - PullRequest
0 голосов
/ 24 марта 2019

Я хотел бы укоротить длинные строки с окончанием "см. Подробнее ..." .

Все идет хорошо, если в строке нет новыхлинии.


"Кот съел торт и без проблем вышел из дома. Затем на следующий день случилось что-то действительно плохое. Хозяин выгнал кота и маленькое животноеу меня не было возможности вернуться назад. "

становится

" Кот съел торт и без проблем вышел из дома. Затем увидеть больше..."


Но помимо этого, Я бы хотел также ограничить высоту .Так что длина строки может быть не более 200pt, например:

2 новых строки

>

1 новая строка

3 newстроки

>

>

0 новая строка

должна стать

2 новые строки

>

1 новая строка

Подробнее ...


Как определить, после какого символая должен поставить текст «Подробнее ...»?

Код:

func shorten(maxWidth : CGFloat) -> NSMutableAttributedString {


        let font = UIFont.preferredFont(forTextStyle: UIFont.TextStyle.body)
        // If height is more than 200pt
        if self.height(withConstrainedWidth: maxWidth, font: font) > 200 {
            // Here.. how?
           return finalString
        }

        // If char is more than 400
        if self.count > 400 {
            // BLA BLA CUT TEXT
            return finalString
        }

        let finalString = NSMutableAttributedString(string: self, attributes: [NSAttributedString.Key.font : font])

        return finalString
    }

1 Ответ

1 голос
/ 24 марта 2019

Я настоятельно рекомендую вам не ставить see more... в виде простой строки внутри вашего текста.

Лучше подходить к UIButton с текстом see more... сразу после ярлыка.

В этом случае вы можете легко манипулировать его положением, формой, пользовательским интерфейсом и т. Д.

...