我尝试使用NSHTMLTextDocumentType在UITextView中设置文本格式。 UITextView位于PageViewController的页面/ VC上。
一切正常,当我在模拟器中测试时,它工作正常。 除了......当我切换设备并开始在PageViewController中的页面之间拖动时,文本停止显示。我意识到在笔记本电脑上使用模拟器时,我点击而不是拖动来更改页面。
因此在以下情况下格式化工作/失败:
有趣的是,当页面无法将文本拖动到下一页时:
我的理论是,html的渲染速度太慢,因此页面效果会在VC完全呈现之前获得VC,并且不会显示文本。
我渲染textView的代码在viewDidLoad中,如下所示。这三种方法都使用相同的函数来生成VC。
//set the html text
var htmlData:String = "<P><H1>test</H1></P>"
htmlData += "<P>Some <B>more</B> text</P>"
htmlData += "<UL><LI>1</LI><LI>2</LI></UL>"
//convert the html to attributed text
let attributedData = htmlData.dataUsingEncoding(NSUnicodeStringEncoding)
informationTextView.attributedText = try! NSAttributedString(data: attributedData!, options: [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType], documentAttributes: nil)
//set the font
if let font = UIFont(name: "StoneSerifMedium", size: 12.0) {
informationTextView.font = font
}
//Force the scrollable area to top left
informationTextView.setContentOffset(CGPointMake(0, -999), animated: true)
问题:
答案 0 :(得分:0)
当在设备上运行时(不在模拟器中),我注意到我收到了关于虚假层大小的警告:
2016-01-08 12:43:06.640 ThaiFootMassage[7061:4333540] -[<_UITileLayer: 0x15fea56a0> display]: Ignoring bogus layer size (3163616608641188102144.000000, 2361183241434822606848.000000), contentsScale 2.000000, backing store size (6327233217282376204288.000000, 4722366482869645213696.000000)
还注意到偶尔会出现文字,但会快速下到页面,然后消失。
注释掉以下行修复了警告并开始显示文字:
//Force the scrollable area to top left
//informationTextView.setContentOffset(CGPointMake(0, -999), animated: true)
我假设可归属文本(html)允许渲染文本上方的空白区域,因此它从底部滚动。纯文本将停在顶部。