Ну, это должно сработать, чтобы получить подстроку мастер-строки, которая уместится в желаемой ширине:
//masterString is your long string that you're looking to break apart...
NSString *tempstring = masterString;
while (someLabel.bounds.size.width < [tempString sizeWithFont:someLabelLabel.font].width) {
NSMutableArray *tempArray = [NSMutableArray arrayWithArray:[tempString componentsSeparatedByString:@" "]];
//Remove the last object, which is the last word in the string...
[tempArray removeLastObject];
//Recreate the tempString with the last word removed by piecing the objects/words back together...
tempString = @"";
for (int i=0; i < tempArray.count - 1; i++) {
tempString = [tempString stringByAppendingFormat:@"%@ ", [tempArray objectAtIndex:i]];
}
//You must append the last object in tempArray without the space, or you will get an infinite loop...
tempString = [tempString stringByAppendingFormat:@"%@", [tempArray objectAtIndex:tempArray.count - 1]];
}
//Now do whatever you want with the tempString, which will fit in the width desired...
Конечно, это предполагает, что вы хотите, чтобы разделение происходило с использованием переноса слов.Если вы не возражаете против того, чтобы сами слова были разделены (т.е. перенос символов), чтобы полностью занять желаемую ширину, сделайте это вместо:
NSString *tempstring = masterString;
while (someLabel.bounds.size.width < [tempString sizeWithFont:someLabelLabel.font].width) {
tempString = [tempString substringToIndex:tempString.length - 1];
}
//Now do whatever you want with the tempString, which will fit in the width desired...
, чтобы оставить оставшуюся часть строкиболее того, сделайте это:
NSString *restOfString = [masterString substringFromIndex:tempString.length];
Надеюсь, это поможет.Я должен признать, что я еще не проверил этот код должным образом, хотя я делал нечто подобное в прошлом ...