2011-09-16 34 views
5

Chúng ta đều biết rằng chúng ta có thể tính chiều cao của nhãn hoặc bất kỳ điều khiển nào theo văn bản. Như thế này:Nhận văn bản dựa trên chiều cao

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

Giả sử tôi nhận được chiều cao = 270. Bây giờ tôi chỉ muốn văn bản nằm ở độ cao 200. Giống như chiều cao nhãn của tôi là 200 và tôi muốn điều đó cho đến khi văn bản 200 chiều cao xuất hiện trong nhãn và phần còn lại của văn bản sẽ hiển thị trong nhãn khác. Vì vậy, tôi muốn hỏi xem có thể lấy được văn bản dựa trên chiều cao không.

Cảm ơn trước!

+0

Bạn có nghĩa là, bạn muốn để có được kích thước font chữ theo chiều cao của nhãn? –

+0

không có kích thước phông chữ văn bản được cố định, tôi chỉ cần nhiều văn bản có thể được sửa ở một số độ cao cụ thể. – Gypsa

+0

Tôi nghĩ phương pháp tốt nhất sẽ kiểm tra điều này trong một thời gian ... –

Trả lời

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

Tôi nghĩ rằng điều này có thể thực hiện công việc. Nó không được kiểm tra đầy đủ, nhưng nó hoạt động.

1

Theo nhu cầu của bạn, bạn có thể thay đổi văn bản nhãn tùy thuộc vào sở thích của bạn. Đây là mã mẫu của tôi.

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

}

Các vấn đề liên quan