iOS: CGRect конкретного текста в строке UILabel

Я хочу знать, какой кадр будет содержать строку после того, как она будет выведена в rect.

NSString *string = @"This is a sample text."; UILabel *label = [[UILabel alloc] init]; label.text = string; // do some setups here 

В drawInRect: я хочу получить фрейм определенного слова. Предположим, что я хочу знать прямоугольник для sample This is a sample text. строка.

Вот пример UILabel и я хочу знать рамку текста внутри красной рамки. Благодаря!

введите описание изображения здесь

вы не получите фрейм для определенного слова в UILabel, вы получите только ракурс UILabel, вы разделите строку на слова, как это

 NSArray *stringArray = [originalString componentsSeparatedByString:@" "]; 

добавить UILabel и текст и фрейм для каждой UILabel

 int x=0; int y=0; for(int i=0;i<stringArray.count;i++) { CGSize size =[[stringArray objectAtIndex:i] sizeWithFont:[UIFont fontWithName:@"ChaparralPro-Bold" size:fontSize ]]; UILabel *label=[[UILabel alloc]init]; if(x+size.width >320) { y=y+size.height; x=0; } label.frame = CGRectMake(x,y,size.width,size.height); x=x+size.width; label.text=[wordsArray objectAtIndex:i]; label.textColor=UIColorFromRGB(0x3a5670); label.font=[UIFont fontWithName:@"ChaparralPro-Bold" size:fontSize]; label.backgroundColor=[UIColor clearColor]; [self.view addSubview:label]; [label release]; } 

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

т.е. предположим, что символ «R» занимает 8 пикселей по координате X. например, умножая 8* number of characters in the label вы можете получить фрейм

Вы можете получить размер строки, используя функцию:

 - (CGSize)sizeWithFont:(UIFont *)font; CGSize wordSize = [@"sample" sizeWithFont:font]; 

Вы можете выполнять итерацию по всем словам и новой строке и получать кадры каждого слова соответственно

 1]Create a CGRect. CountRect=CGRectMake(rect.origin.x, rect.origin.y+22 + (rect.size.height - height)/2, rect.size.width, (rect.size.height - height)/2); 2]set NSString which contain string.(your case only contain sample) NSString* myNewString; 3]set NSString to CGRect. [myNewString drawInRect:CountRect withFont:fontlineBreakMode:UILineBreakModeClip alignment:UITextAlignmentCenter]; [myNewString drawInRect:CountRect withAttributes:attributes]; 
  • Установка фона UILabel (проблема прозрачности с .png-файлами)
  • Как я могу отображать текст на UILabel один за другим после каждого нажатия кнопки?
  • Программное создание UILabel
  • Нарисованный текст на CALayer не появляется или падает во время выполнения
  • Как сделать курсивом UILabel без заботы о размере?
  • Установка разных цветов на один и тот же символ метки
  • Добавить регулярное действие в NSAttributedString?
  • Как установить кернинг в iPhone UILabel
  • Минимальный размер шрифта UILabel
  • Создавать привязанные «ссылки» в NSAttributedString UILabel?
  • нарисуйте только верхнюю, правую и нижнюю границы вокруг uilabel
  • Давайте будем гением компьютера.