iPhone:分割在多个页面上的文本(页面控制+文本视图)

时间:2011-10-10 17:19:21

标签: iphone objective-c xcode

我目前正在开发一款iphone应用程序,我想在多个页面上显示大量文本,但我想不出一个好的或有效的方法。

我目前正在使用字符数来确定要使用的页数以及加载到该页面的文本部分,但在某些情况下它会失败,因为逻辑不是很好。我在下面列出了一些代码。

有没有人有任何建议,比如试图计算单词,而不是字符,这是一种更好的方法?

确定需要多少页面:

//Character count used is 740
int iCharactersPerPage = 740;
int iNumberOfPages = (self.passFunctionalityName.length/iCharactersPerPage);
NSMutableArray *controllers = [[NSMutableArray alloc] init];
for (unsigned i = 0; i < iNumberOfPages ; i++) 
{
    [controllers addObject:[NSNull null]];
}
self.viewControllers = controllers;
[controllers release];

为页面分配文字:

//Get the text depending on the page number
NSString *text;
NSLog(@"%d", pageNumber);
NSLog(@"%d", totalNumberOfPages);

if((totalNumberOfPages-1) == pageNumber)
{
    text = [passFunctionalityName substringWithRange: NSMakeRange(740*pageNumber, passFunctionalityName.length-740*pageNumber)]; 
    self.textView.text = text;
}
else
{

    text = [passFunctionalityName substringWithRange: NSMakeRange(740*pageNumber, 740)]; 
    self.textView.text = text;
}

感谢您的时间和帮助。如果您有任何问题或需要我解释更多,请告诉我。

<井晶涛

1 个答案:

答案 0 :(得分:0)

您可以做的一件事是暂时将文本放入UILabel并确定帧大小。然后确定所需的页数。我使用以下代码确定动态帧大小,以便在使用此代码运行时直到标识大小时才能使用多个标签布局视图层次结构。请注意,在此代码中,前一个标签的框架信息用于定位此标签。

UILabel *titleLabel = [[[UILabel alloc] initWithFrame:CGRectZero] autorelease];
titleLabel.backgroundColor = [UIColor clearColor];
titleLabel.lineBreakMode = UILineBreakModeWordWrap;
titleLabel.numberOfLines = 0;
titleLabel.font = [UIFont systemFontOfSize:22];
titleLabel.textColor = [UIColor blackColor];
titleLabel.textAlignment = UITextAlignmentCenter;
titleLabel.text = [managedObject valueForKey:@"title"];
[titleLabel setUpMultiLineFrameBasedOnWidth:310.0 withStartXPosition:5.0 withStartYPosition:(frame.origin.y + frame.size.height + 5.0)];

然后访问帧大小以计算视图上下一个组件的位置

frame = titleLabel.frame;

对于给定数量的文本进行分页,您可能会执行类似于计算高度的操作。