2011-09-16 9 views
5

Wszyscy wiemy, że możemy obliczyć wysokość etykiety lub dowolnej kontroli zgodnie z tekstem. W ten sposób:Pobieranie tekstu na podstawie wysokości

NSString *[email protected]"fwfgwefgwefhwefhwoefhwoeifhoiwefhwoeifhwieofhweohfiweofowefhowefhoweifhweofhweofhweoihfweiofhiowefhweiofhwioefhweiofhiweofhweiofhweiofhweiofhweiofweoifiweofhweoifhiowefhoiwefhowewoefoiwehfoiwe";  
    labelsize=[text sizeWithFont:[UIFont systemFontOfSize:14] constrainedToSize:CGSizeMake(100, 2000.0)]; 
    NSLog(@"labelsize.height%f",labelsize.height); 

Załóżmy teraz, że mam wysokość = 270. Teraz chcę tylko ten tekst, który leży w 200 wysokości. Podobnie jak wysokość mojej etykiety to 200 i chcę, aby tekst o wysokości 200 pojawił się w etykiecie, a reszta tekstu powinna być wyświetlana w innej etykiecie. Chciałbym zapytać, czy możliwe jest uzyskanie tekstu na podstawie wysokości.

Z góry dziękuję!

+0

Czy to znaczy, czy chciałbyś, aby uzyskać rozmiar czcionki tekstu w zależności od wysokości etykiety? –

+0

nie ma rozmiaru czcionki tekstowej, potrzebuję tylko tyle tekstu, który można naprawić na określonej wysokości. – Gypsa

+0

Myślę, że najlepszą metodą byłoby sprawdzić to od jakiegoś czasu ... –

Odpowiedz

3
CGFloat maxHeight = 500; 
NSString *text = @"fwfgwefgwefhwefhwoefhwoeifhoiwefhwoeifhwieofhweohfiweofowefhowefhoweifhweofhweofhweoihfweiofhiowefhweiofhwioefhweiofhiweofhweiofhweiofhweiofhweiofweoifiweofhweoifhiowefhoiwefhowewoefoiwehfoiwe"; 
NSMutableString *tmpText = [[NSMutableString alloc] initWithString:text]; 
NSRange range = NSMakeRange([tmpText length] - 1, 1); 
while ([text sizeWithFont:[UIFont systemFontOfSize:14] constrainedToSize:CGSizeMake(100, 2000.0)].height > maxHeight) { 
    [tmpText deleteCharactersInRange:range]; 
    range.location--; 
} 
NSLog(@"result: %@", tmpText); 
[tmpText release]; 

Myślę, że to może wykonać zadanie. Nie jest w pełni przetestowany, ale działa.

1

W zależności od potrzeb można zmienić tekst etykiety w zależności od zainteresowania. Oto mój przykładowy kod.

NSMutableString *tmpLabel2=[[NSMutableString alloc]init]; 
NSString *[email protected]"Hello friend what r u doin..? what is going on in your company.. Tell me something yar i want to meet with u whenever u free just call me i will be der ok rest is perfect. talk u later…";  
NSMutableString *tmpLabel1 = [[NSMutableString alloc] initWithString:text]; 
NSRange range = NSMakeRange([tmpLabel1 length] - 1, 1); 

CGSize labelsize=[text sizeWithFont:[UIFont systemFontOfSize:14] constrainedToSize:CGSizeMake(100, 2000.0) lineBreakMode:UILineBreakModeWordWrap]; 
while ([tmpLabel1 sizeWithFont:[UIFont systemFontOfSize:14] constrainedToSize:CGSizeMake(100, 2000.0)].height > 200) { 

    unichar Char=[tmpLabel1 characterAtIndex:[tmpLabel1 length]-1]; 
    NSString*strTemp=[NSString stringWithFormat:@"%C",Char]; 
    [tmpLabel2 insertString:strTemp atIndex:0]; 
    [tmpLabel1 deleteCharactersInRange:range]; 
    range.location--; 
} 

label.frame=CGRectMake(50, 50, labelsize.width, 200); 
label.text=tmpLabel1; 
label.font=[UIFont fontWithName:@"Arial" size:14]; 
label.numberOfLines=0; 
label.clipsToBounds=YES; 
label.adjustsFontSizeToFitWidth=YES; 
label.lineBreakMode=UILineBreakModeCharacterWrap; 
label.backgroundColor=[UIColor grayColor]; 

NSLog(@"first Label is: %@", tmpLabel1); 
NSLog(@"Second Label is: %@", tmpLabel2); 

}

Powiązane problemy