Интервал между пусковыми точками и начальная позиция линии с помощью NSHTMLTextDocumentType - программирование

Интервал между пусковыми точками и начальная позиция линии с помощью NSHTMLTextDocumentType

В iOS 7 пришло NSHTMLTextDocumentType, которое Im использует код ниже для анализа html и показывает его в UITextView. Он отлично работает, за исключением пулевых точек.

Как я могу изменить интервал с каждой стороны маркеров (пространство между маркер и левая граница UITextView, а также пробел между маркером и текст справа от него)?

Кроме того, что более важно. Если текст продолжается в следующей строке, мне также нужно, чтобы он продолжался в той же позиции x, что и строка над ней, где начинался текст точки пули. Как я могу это достичь? (Отступ второй строки)

Я пробовал использовать все виды 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;
4b9b3361

Ответ 1

Вы должны иметь возможность прекратить изменяемый параметр paragraphStyle, а затем установить его отступы, например:

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

тогда установите этот стиль абзаца ТОЛЬКО в диапазоне текста, который содержит точки маркера.

(Это будет немного неуклюже, чтобы попытаться начать с HTML, я бы подумал: если вы хотите остаться с этим маршрутом, можете разбить его на две строки HTML, один из списка маркеров и один для, поэтому вы можете легко установить другие свойства.)