2013-06-13 16 views
5

Chcę wiedzieć, w której klatce znajdzie się ciąg znaków po wyprostowaniu.iOS: CGRect określonego tekstu w ciągu znaków UILabel

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

W drawInRect: metody, chcę odzyskać klatkę konkretnego słowa. Powiedzmy, że chcę znać rect dla sample z ciągu This is a sample text..

Oto próbka UILabel i chcę poznać ramkę tekstu w czerwonym polu. Dzięki!

enter image description here

+0

hmm .. ciekawe .. Czy możesz dać wgląd w to, co próbujesz osiągnąć z tym .. ?? WIĘC, że można się dowiedzieć, czy jest inny sposób, aby to zrobić ...? Czy to ci pomoże ..? https://gist.github.com/erkie/1278483 – akshaynhegde

+0

Na przykład chcę narysować ramkę lub obraz tła w ramce. – dzep

Odpowiedz

0

nie dostać ramki dla danego słowa w UILabel, można dostać tylko UILabel ramkę, należy podzielić ciąg znaków w słowach, jak to

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

dodać UILabel i tekst & ramkę dla każdego 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

możesz to zrobić, decydując się na piksel perticular dla jednej postaci

tj. Przypuśćmy, że znak "R" przyjmuje 8 pikseli w układzie współrzędnych X. tak przez pomnożenie 8* number of characters in the label można uzyskać rama

0

można uzyskać rozmiaru łańcucha za pomocą funkcji:

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

Można iterację wszystkich słów i nowej linii i uzyskać klatki każdego słowa odpowiednio

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];