Salut dans mon application, j'ai une longue string. A partir de cette string, je dois sous-traiter une partie d'une string où la hauteur de la string est 500. Alors s'il vous plaît laissez-moi savoir comment get la partie d'une string.
Pour votre reference, je partage le code que j'ai utilisé pour get la hauteur de la string
CGSize finalSsortingngSize = [finalSsortingng sizeWithFont:font constrainedToSize:CGSizeMake(195,length) lineBreakMode:NSLineBreakByWordWrapping];
Ici finalssortingngSize.height est 500. Maintenant, n'importe qui m'aide à get une sous-string de la string finale où la hauteur de la sous-string est de 500.
Aidez-moi, s'il vous plaît.
Utilisez ce code pour définir une hauteur de contenu particulière:
NSSsortingng *finalSsortingng=@"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]; NSSsortingng *firstPartSsortingng=[NSSsortingng ssortingngWithSsortingng:finalSsortingng]; CGSize firstPartSsortingngSize = [firstPartSsortingng sizeWithFont:font constrainedToSize:CGSizeMake(195,MAXFLOAT) lineBreakMode:NSLineBreakByWordWrapping]; while(firstPartSsortingngSize.height > length) { firstPartSsortingng = [firstPartSsortingng subssortingngWithRange:NSMakeRange(0, firstPartSsortingng.length-1)]; firstPartSsortingngSize = [firstPartSsortingng sizeWithFont:font constrainedToSize:CGSizeMake(195,MAXFLOAT) lineBreakMode:NSLineBreakByWordWrapping]; } if(firstPartSsortingngSize.height <= length) { while(![[firstPartSsortingng subssortingngToIndex:[firstPartSsortingng length]-1] isEqualToSsortingng:@" "]) { NSLog(@"%@",[firstPartSsortingng subssortingngFromIndex:[firstPartSsortingng length]-1]); if([firstPartSsortingng subssortingngFromIndex:[firstPartSsortingng length]-1].length !=0 && ![[firstPartSsortingng subssortingngFromIndex:[firstPartSsortingng length]-1] isEqualToSsortingng:@" "]) { firstPartSsortingng = [firstPartSsortingng subssortingngWithRange:NSMakeRange(0, firstPartSsortingng.length-1)]; } else { break; } } } NSSsortingng *resultStr=firstPartSsortingng; int secondPartSsortingngLength=[finalSsortingng length]-firstPartSsortingng.length; NSRange secondPartSsortingngRange=NSMakeRange(firstPartSsortingng.length, secondPartSsortingngLength); NSSsortingng *secondPartSsortingng=[finalSsortingng subssortingngWithRange:secondPartSsortingngRange];
Selon mon commentaire, vous pouvez essayer ceci:
CGSize finalSsortingngSize = [finalSsortingng sizeWithFont:font constrainedToSize:CGSizeMake(195,length) lineBreakMode:NSLineBreakByWordWrapping]; while( finalSsortingngSize.height > 500 ){ finalSsortingng = [finalSsortingng subssortingngWithRange:NSMakeRange(0, finalSsortingng.length-1)]; finalSsortingngSize = [finalSsortingng sizeWithFont:font constrainedToSize:CGSizeMake(195,length) lineBreakMode:NSLineBreakByWordWrapping]; } NSLog(finalSsortingng); // and that is your end ssortingng...
Selon votre commentaire ci-dessous, vous pouvez utiliser la méthode CTFramesetterSuggestFrameSizeWithConstraints
pour find la NSRange
que vous pouvez utiliser dans [finalSsortingng subssortingngWithRange:range];
pour get votre résultat final.
La documentation pour cette méthode est ici .