2013-11-01 10 views
10

iOS 7はNSHTMLTextDocumentTypeとなりました。これは、以下のコードを使用してhtmlを解析し、UITextViewに表示しています。それは、箇条書きの点を除いて、完全に動作します。NSHTMLTextDocumentTypeを使用した箇条書きの間隔と改行の開始位置

どのように私は両方のbulletpointsの各側の間隔( bulletpointとUItextView左の境界とbulletpoint とその右にあるテキストの間のスペースとの間のスペース)を変更できますか?

さらに重要です。テキストが次の行に続く場合は、箇条書きテキストが始まった行の上の行と同じx位置で続行する必要があります。どうすればこれを達成できますか? (2行目インデント)

私はあらゆる種類のCSSを使用しようとしましたが、まだNSHTMLTextDocumentTypeはかなり限られているようです。私が管理したのは、ちょうどリストの色を変えることです。

すべてのご協力をいただきありがとうございます。

ありがとうございます!

コード:

_textView.textContainer.lineBreakMode = NSLineBreakByCharWrapping; 

NSString *testText = @"<p><b>This is a test with:</b></p><ul><li>test test test 
test test test test test test test test test test <li>test test test test test 
test <li>test test test test test <li>test test test test test test test test 
test test test test <li>test test test test test test test test <li>test test 
test test test test <li>test test test test test test test test test 
</li></ul>"; 

    NSDictionary *options = @{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType}; 
    NSData *htmlData = [testText dataUsingEncoding:NSUnicodeStringEncoding]; 

    _attributedString = [[NSMutableAttributedString alloc] initWithData:htmlData 
    options:options documentAttributes:nil error:nil]; 

    // Paragraph style 
    NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; 
    paragraphStyle.paragraphSpacing = 0; 
    paragraphStyle.lineHeightMultiple = 1.0f; 
    paragraphStyle.maximumLineHeight = 30.0f; 
    paragraphStyle.minimumLineHeight = 20.0f; 

    // Adding attributes to attributedString 
    [_attributedString addAttributes:@{NSParagraphStyleAttributeName:paragraphStyle} 
           range:NSMakeRange(0,_attributedString.length)]; 
    [_attributedString addAttributes:@{NSFontAttributeName:font} 
       range:NSMakeRange(0,_attributedString.length)]; 

    // Setting the attributed text 
    _textView.attributedText = _attributedString; 
+1

テキストをHTMLに変換してから、もう一度箇条書きスタイルに変換していますか? NSmutableArrayのNSDictionaryを持っている場合は、箇条書きの点を直接表示できます –

答えて

2

あなたが好きな、可変paragraphStyleを中止することができ、その後、そのインデントを設定する必要があります。そのテキストの範囲だけに、この段落スタイルを設定

NSMutableParagraphStyle *const bulletParagraphStyle = [paragraphStyle mutableCopy]; 
bulletParagraphStyle.firstLineHeadIndent = 20; 
bulletParagraphStyle.tailIndent =20; 

その後、弾丸が含まれています。

(HTMLで始めるのはちょっと面白くないと思います。そのルートにとどまりたい場合は、2つのHTML文字列、1つは箇条書きリスト、1つはヘッダーは異なるプロパティをより簡単に設定できます)。

関連する問題