かなり長い文字列のコンテンツをコンテンツのページに分割しようとしています。現在、次のように文字単位 (1 ページあたり 500 文字) でこれを行っています。
//Lets find out how many pages to make
int pageLength = 500; //how many characters per page
NSString *text = ((Story *) [self.story objectAtIndex:chapter]).content;
int NumberOfPages = (text.length/pageLength);
//NumberOfPages += 1;
//Build the Pages Array
NSMutableArray *pageStrings = [[NSMutableArray alloc] init];
for (int i = 0; i <= (NumberOfPages+1); i++)
{
if (i < NumberOfPages) {
//Load the text like normal
NSString *contentString = [[NSString alloc]initWithFormat:@"<html><head><style type=text/css>body {font-family: \"%@\"; font-size: %d;}</style></head><body><p>%@</p></body></htlm>",@"helvetica",20,[text substringWithRange:NSMakeRange(i*pageLength,pageLength)]];
[pageStrings addObject:contentString];
}
if (i == NumberOfPages) {
//on the last page, only load what's available
NSString *contentString = [[NSString alloc]initWithFormat:@"<html><head><style type=text/css>body {font-family: \"%@\"; font-size: %d;}</style></head><body><p>%@</p></body></htlm>",@"helvetica",20,[text substringWithRange:NSMakeRange(i*pageLength,(text.length-(i*pageLength)))]];
[pageStrings addObject:contentString];
}
if (i > NumberOfPages){
//add in a blank page on the end
NSString *contentString = [[NSString alloc]initWithFormat:@"<html><head><style type=text/css>body {font-family: \"%@\"; font-size: %d;}</style></head><body><p>%@</p></body></htlm>",@"helvetica",20,@"What do you do?"];
[pageStrings addObject:contentString];
}
}
pageContent = [[NSArray alloc] initWithArray:pageStrings];
これはうまく機能しますが、途中で単語が分割されてしまうことがよくあります。代わりに単語を分割しようとしています。文字列は正確に 500 文字である必要はありません。