2011-10-10 38 views
2

我目前正在研究iphone應用程序,並且我想在多個頁面上顯示大量文本,但我想不出一個好的或有效的這樣做的方式。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; 
} 

謝謝您的時間和幫助。如果您有任何問題或需要我解釋更多,請讓我知道。

你可以做荊荊濤

回答

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; 

你也許可以做類似的事情來計算高度的文本給定的量進行分頁下一個組件的位置。

+0

如果有很多文字,該標籤不會非常有效。我正在尋找這個答案... – FeifanZ