-->

如何获得目标C特定高度的字符串(How to get a string of a particula

2019-10-19 01:12发布

喜在我的应用我有一个长的字符串。 从字符串我有子串字符串,其中字符串高度是500所以,请让我知道如何得到一个字符串的一部分的一部分。

供您参考我分享我用来获取字符串高度的代码

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

这里finalstringSize.height是500。现在,任何一个可以帮助我摆脱最终的字符串如该子高度为500的子字符串。

请帮我。

Answer 1:

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

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


Answer 2:

按我的意见,你可以试试这个:

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方法找到NSRange ,你可以在使用[finalString substringWithRange:range]; 让你的最终结果。

该方法的文档是在这里 。



文章来源: How to get a string of a particular height in objective c