Это другой подход. Определите минимальный размер текста, чтобы он не занимал более одной строки. Если он переносится на одну строку, вы можете узнать это, используя высоту.
Вы можете использовать этот код:
CGSize maximumSize = CGSizeMake(300, 9999);
NSString *myString = @"This is a long string which wraps";
UIFont *myFont = [UIFont fontWithName:@"Helvetica" size:14];
CGSize myStringSize = [myString sizeWithFont:myFont
constrainedToSize:maximumSize
lineBreakMode:self.myLabel.lineBreakMode];
300 - ширина экрана с небольшим пространством для полей. Вам следует подставить собственные значения для шрифта и размера, а также для lineBreakMode
, если вы не используете IB.
Теперь myStringSize
будет содержать height
, который вы можете проверить по высоте чего-то, что вы знаете, имеет высоту всего 1 строчку (используя тот же шрифт и размер). Если он больше, вам нужно будет вырезать текст. Обратите внимание, что вы должны добавить ... к строке, прежде чем проверять ее снова (добавление ... может привести к ее превышению).
Поместите этот код в цикл, чтобы вырезать текст, затем снова проверьте правильность высоты.