11

iOS 7 が登場しました。NSHTMLTextDocumentTypeこれは、以下のコードを使用して html を解析し、UITextView. 箇条書きを除いて、完全に機能します。

箇条書きの両側の間隔 (箇条書きとUItextView左の境界線の間のスペースと、箇条書きとその右側のテキストの間のスペース) を変更するにはどうすればよいですか?

また、もっと重要なこと。テキストが次の行に続く場合は、箇条書きのテキストが始まった上の行のように、同じ 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;
4

1 に答える 1

2

次のように、変更可能な段落スタイルを停止して、そのインデントを設定できるはずです。

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

次に、箇条書きを含むテキストの範囲のみにこの段落スタイルを設定します。

(HTML から始めようとするのは少し不器用になると思います。そのルートにとどまりたい場合は、2 つの HTML 文字列に分割する必要があります。1 つは箇条書きリスト用で、もう 1 つはヘッダー用です。さまざまなプロパティをより簡単に設定できます。)

于 2014-01-07T11:09:00.800 に答える