Получение текста по высоте - PullRequest
       2

Получение текста по высоте

5 голосов
/ 16 сентября 2011

Мы все знаем, что можем вычислить высоту надписи или любого элемента управления в соответствии с текстом.Вот так:

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

Теперь предположим, что я получаю высоту = 270.Теперь я хочу только тот текст, который лежит в 200 высоту.Например, высота моей метки равна 200, и я хочу, чтобы до высоты 200 текст появлялся в метке, а остальная часть текста должна отображаться в другой метке.Поэтому я хочу спросить, возможно ли получить текст на основе высоты.

Заранее спасибо!

Ответы [ 2 ]

3 голосов
/ 16 сентября 2011
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];

Я думаю, что это может сделать работу.Он не полностью протестирован, но работает.

1 голос
/ 16 сентября 2011

В соответствии с вашими потребностями вы можете изменить текст ярлыка в зависимости от ваших интересов. Вот мой пример кода.

NSMutableString *tmpLabel2=[[NSMutableString alloc]init];
NSString *text=@"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);

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...