Используйте «constrainedToSize» (вместо того, чтобы только по ширине) и сделать столько, сколько вы можете.
Если вы действительно хотите получить именно тот текст, который не подходит, вам придется выполнить поиск по существу, добавив слово за раз, а затем выполнив проверку размера, чтобы узнать, насколько высок вы получили. Вы можете начать с приблизительной оценки, выполнив всю строку, ограниченную чем-то только одной строкой с бесконечной шириной (скажем, 999999), а затем разделите ширину на столько строк, которые вы хотите, чтобы получить грубую отправную точку для добавления/удаление слов из строки (это не будет точно из-за переноса слов).
Принципиально, хотя кажется странным взять оставшийся текст и поместить его в другую ячейку. Вы действительно уверены, что не хотите просто изменить высоту ячейки с текстом, чтобы он мог вместить все это?