我正在努力熟悉CoreText
,我从制作自己的笔记应用程序开始。
我已经将regex与AttributedStrings
结合起来,并试图从本质上模拟我现在输入的StackOverflow
文本框的功能。
我有所有的共同点,比如:
粗体字
- 斜体字 *
个标题
emphasis blocks
但是我正在努力做一个块引用/代码块。
类似这样的东西,它中断到自己的行,并创建一个框,去到边缘,无论文本有多长。
And it changes the background color
我看过一些注入HTML / CSS的老例子,但是我希望我可以使用一些特殊的NSAttributedStringKey
组合来完成它。
2条答案
按热度按时间xzv2uavs1#
是的,这是可能的。下面是Swift 3中的一个示例:
以下是输出:
但是要记住
UITextView
在布局和样式方面远不如web视图强大,如果你想变得更花哨(就像stackoverflow在blockquote框的左边用深色线做的那样),你应该生成HTML和CSS,然后使用web视图。jckbn6z72#
是的,这是可能的,只有
NSAttributedString
(或新的AttributedString
,今年出来)。想法很简单,2个步骤:
1.使用自定义
headIndent
和firstLineHeadIndent
给予引用段落NSMutableParagraphStyle
赋值。这将在段落左侧提供额外的空间,可用于绘制垂直线。1.通过UITextView子类实现
draw(in:rect)
函数,绘制竖条和背景矩形,使用UITextView的UITextInput
协议中的position(from:offset:)
函数,可以找到段落的矩形,使用CAShapeLayer
和UIBezierPath
,类似于UIView
的addSubview()
,可以完成绘制