2013-06-13 3 views
5

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

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 и я хочу знать рамку текста внутри красной коробки. Благодаря!

enter image description here

+0

hmm .. interesting..Can u дайте какие-либо сведения о том, что вы пытаетесь выполнить с этим .. ?? ТАК, что можно узнать, есть ли другой способ сделать это. ?? Это вам поможет ..? https://gist.github.com/erkie/1278483 – akshaynhegde

+0

Например, я хочу нарисовать окно или фоновое изображение на кадре. – dzep

ответ

0

вы не получите рамку для конкретного слова в 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]; 
} 
0

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

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

0

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

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

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

0
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]; 
Смежные вопросы