如何在目标c中获得一个特定高度的string

嗨在我的应用程序,我有一个冗长的string。 从那个string中,我必须子string​​的一部分string高度是500.所以,请让我知道如何获得一个string的一部分。

为了您的参考,我分享了我用来获取string高度的代码

CGSize finalStringSize = [finalString sizeWithFont:font constrainedToSize:CGSizeMake(195,length) lineBreakMode:NSLineBreakByWordWrapping]; 

这里finalstringSize.height是500.现在任何一个帮助我从最终的string中得到一个子string,那个子string的高度是500。

请帮帮我。

在这里输入图像说明

使用此代码设置特定的内容高度:

  NSString *finalString=@"d jdsfhksd fsdfhjkds fkdhsfjkdsf kdsfhjkdsf sdjkfsdfh dsfhsfisudi udsifhisdhf sdhfkh sdkf dshf ksdh fkhsd khsdfh sdkhf sdhkfhsdjkfhdshf sdfhdshf hsdfh ksdhf kdhsf hsdkfhsdkhf sdf hsdkfh dsf sdkhf ksdhf hsdfh sdhfksdhf sd ksdhsdh ksdh dhs hsdh ksdh dhs fhsdfh dsfsdfdf sdf sd sd dsf sd fsdf ds"; int length =200; UIFont *font=[UIFont fontWithName:@"Helvetica" size:17.0f]; NSString *firstPartString=[NSString stringWithString:finalString]; CGSize firstPartStringSize = [firstPartString sizeWithFont:font constrainedToSize:CGSizeMake(195,MAXFLOAT) lineBreakMode:NSLineBreakByWordWrapping]; while(firstPartStringSize.height > length) { firstPartString = [firstPartString substringWithRange:NSMakeRange(0, firstPartString.length-1)]; firstPartStringSize = [firstPartString sizeWithFont:font constrainedToSize:CGSizeMake(195,MAXFLOAT) lineBreakMode:NSLineBreakByWordWrapping]; } if(firstPartStringSize.height <= length) { while(![[firstPartString substringToIndex:[firstPartString length]-1] isEqualToString:@" "]) { NSLog(@"%@",[firstPartString substringFromIndex:[firstPartString length]-1]); if([firstPartString substringFromIndex:[firstPartString length]-1].length !=0 && ![[firstPartString substringFromIndex:[firstPartString length]-1] isEqualToString:@" "]) { firstPartString = [firstPartString substringWithRange:NSMakeRange(0, firstPartString.length-1)]; } else { break; } } } NSString *resultStr=firstPartString; int secondPartStringLength=[finalString length]-firstPartString.length; NSRange secondPartStringRange=NSMakeRange(firstPartString.length, secondPartStringLength); NSString *secondPartString=[finalString substringWithRange:secondPartStringRange]; 

根据我的评论,你可以试试这个:

 CGSize finalStringSize = [finalString sizeWithFont:font constrainedToSize:CGSizeMake(195,length) lineBreakMode:NSLineBreakByWordWrapping]; while( finalStringSize.height > 500 ){ finalString = [finalString substringWithRange:NSMakeRange(0, finalString.length-1)]; finalStringSize = [finalString sizeWithFont:font constrainedToSize:CGSizeMake(195,length) lineBreakMode:NSLineBreakByWordWrapping]; } NSLog(finalString); // and that is your end string... 

根据下面的注释,可以使用CTFramesetterSuggestFrameSizeWithConstraints方法来查找可以在[finalString substringWithRange:range];使用的[finalString substringWithRange:range]; 得到你的最终结果。

该方法的文档在这里 。