2014-05-15 52 views
0

在舊的RPG遊戲,對話文本鍵入在屏幕上,如果有一個以上可以適合在頁面上有好多是...然後按NEXT繼續閱讀。老RPG滾動文本,但分手的文本塊(點點點)

我已經得到了很多的這個已經工作。我被卡住的是我需要一塊文本編程方式知道如何打破自己從頁面到頁面使用...

通常,簡單的路線將只是在對話中指定斷點應該是,但是對於這個特定的項目,我必須允許它獲取大塊文本,然後將其分解爲每個頁面的正確大小。

人對如何做到這一點有什麼想法?只計算字符將不起作用,因爲字體不會等寬。

我在的時候試圖尋找這個地獄。發現this,但它沒有回答我的問題。

非常感謝!

+0

嗨mxisaac,任何運氣實施使用我的提示下面? – nzs

回答

1

一種解決方案可能是:

  1. 單獨所有從大的文本字到一個數組
  2. 經過它和搜索基於文本框的高度邊界

你可以執行它例如:

 CGFloat w = 200.0; // RPG textbox width. Get it from actual UI object. 
     CGFloat h = 150.0; // RPG textbox height. Get it from actual UI object. 
     NSArray *words = [yourRPGtext componentsSeparatedByString:@" "]; 
     NSString *cur_txt = [words objectAtIndex:0]; 
     int i = 1; 
     RPG_txt_pages = [[NSMutableArray alloc] init]; 
     while (i < [words count]) { 
      NSString *next_txt = [cur_txt stringByAppendingFormat:@" %@",[words objectAtIndex:i]]; 

      CGSize size = [next_txt sizeWithFont:yourRPGtextlable.font 
            constrainedToSize:CGSizeMake(w, 99999) 
            lineBreakMode:UILineBreakModeWordWrap]; 

      if (size.height > h) { 
       cur_txt = [cur_txt stringByAppendingString:@"..."]; 
       [RPG_txt_pages addObject:cur_txt]; 
       cur_txt = [words objectAtIndex:i]; 
      } else { 
       cur_txt = next_txt; 
      } 
      i++; 
     } 
     [RPG_txt_pages addObject:curText]; 

這裏的關鍵是NSString的sizeWithFont方法:here is the link to the docs.

IOS7評論:sizeWithFont已被棄用,你可以使用sizeWithAttributes。 Here is an SO answer on this.

如果你分不清什麼IOS版本是您使用我將修改這個答案。希望它有幫助!