Как получить размер NSString

"quicky": как я могу получить размер (ширина) NSString?

Я пытаюсь видеть, больше ли строковая ширина строки, чтобы видеть, если это, чем данная ширина экрана, случай, в котором я должен "обрезать" ее и добавить ее с "...", получив обычное поведение UILabel. string.length, не добьется цели, так как AAAAAAAA и iiiiii имеют ту же длину, но различные размеры (например).

Я отчасти застреваю.

Большое спасибо.

31
задан camilo 19 April 2010 в 16:21
поделиться

2 ответа

Это другой подход. Определите минимальный размер текста, чтобы он не переносился более чем на одну строку. Если он занимает более одной строки, вы можете узнать, используя высоту.

Вы можете использовать этот код:

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 будет содержать высоту , которую вы можете сравнить с высотой чего-то, что, как вы знаете, составляет всего 1 строку (с использованием того же шрифта и размера). Если он больше, вам нужно будет обрезать текст. Обратите внимание, что вы должны добавить ... к строке, прежде чем проверять ее снова (добавление ... может снова привести к превышению лимита).

Поместите этот код в цикл, чтобы вырезать текст, затем снова проверьте правильность высоты.

38
ответ дан 27 November 2019 в 22:14
поделиться

Вам необходимо использовать Core Graphics для измерения строки, отображаемой с использованием указанного шрифта и размера. См. Ответы на Измерение ширины строки в пикселях в качестве пошагового руководства.

4
ответ дан 27 November 2019 в 22:14
поделиться