2014-08-30 63 views
3

我在我的應用程序中有一個FAQ部分,但我必須以某種方式使用不可編輯的UITextView來呈現它。就像下面那樣,如何格式化字符串以便在ios中正確顯示

  1. 如何取消錄音?

    答:您可以取消記錄,而它在進步按取消(紅色的「X」)按鈕

    in the center of the speaker on the recording screen. The audio recording 
        will not be saved. 
    

但問題是,你可以看到有顯示有一些填充,下一行應該從答案行的下方開始「不低於A」。還有一個大問題的文件,所以我不能手動格式化。它適用於iPhone和iPad,因此我的UITextView寬度不同。有沒有解決這類問題的方法?

+0

我不太確定,但試試看@「第一行\ n \ t第二行帶有製表符\ n \ t \ t第三行帶兩個製表符」。所以「\ t」是一個標籤,「\ n」是換行符 – 2014-08-30 11:45:29

+0

@DavidG。起初,我想到了這一點,但UITextView的寬度出現在iphone和ipad不同的畫面中。所以我不能使用它。 – 2014-08-30 11:58:37

回答

2

我建議使用NSAttributedStringNSParagraphStyle加上NSParagraphAttributeName

這裏有一個例子:

NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:yourString]; 

int indent1 = 0; 
int indent2 = 20; 
int indent3 = 2*indent2; 

NSMutableParagraphStyle *styleTitleByNumber = [[NSMutableParagraphStyle alloc] init]; 
[styleTitleByNumber setFirstLineHeadIndent:indent1]; 
[styleTitleByNumber setHeadIndent:indent1]; 

NSMutableParagraphStyle *styleTitleByLetter = [[NSMutableParagraphStyle alloc] init]; 
[styleTitleByLetter setFirstLineHeadIndent:indent2]; 
[styleTitleByLetter setHeadIndent:indent2]; 

NSMutableParagraphStyle *styleSimpleText = [[NSMutableParagraphStyle alloc] init]; 
[styleSimpleText setFirstLineHeadIndent:indent3]; 
[styleSimpleText setHeadIndent:indent3]; 

[attributedString addAttribute:NSParagraphStyleAttributeName 
         value:styleTitleByNumber 
         range:rangeOfTitleByNumber]; 
[attributedString addAttribute:NSParagraphStyleAttributeName 
          value:styleTitleByLetter 
          range:rangeOfTitleByLetter]; 
[attributedString addAttribute:NSParagraphStyleAttributeName 
          value:styleSimpleText 
          range:rangeOfSimpleText]; 

[yourTextView setAttributedText:attributedString]; 

現在,這取決於如何格式化您的初始文本,我離開你知道在哪裏可以申請哪種風格(用於NSRange參數)的方式,或者你也可以,如果不同部分分開,則對NSAttributedString應用直接影響,然後將它們全部組合。

相關問題