CoreTextView& UIScrollview:计算窗口大小

时间:2015-08-31 07:17:57

标签: html ios objective-c uiscrollview

我在iOS上使用https://developers.google.com/android/guides/http-auth在以编程方式设置的UIScrollview中呈现html文件。一旦html文件超过一定长度,文本就不再呈现。它似乎不是一个问题:

  • 存储器。 NSLog显示整个NSAttributedString,无论它有多长。

  • html文件中的格式错误。我能够将整个文件分片渲染。

如果我为框架放置一个非常大的高度,同样的事情:空屏幕并且没有错误进行故障排除。我怀疑这个问题与计算文件大小有关,也许.. 。字体行大小?难住了。顺便说一句,如果我输入自定义字体,它将被忽略,只显示默认的Helvetica。但是,字体大小可以正确呈现。任何有关获取整个文件的帮助将非常感谢!

我的代码:

m_coreText = [[CoreTextView alloc] initWithFrame:CGRectZero];
m_coreText.backgroundColor = [UIColor clearColor];
m_coreText.contentInset = UIEdgeInsetsMake(10, 10, 10, 10);

NSString* html = [NSString stringWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"terms" ofType:@"html"] encoding:NSUTF8StringEncoding error:NULL];
m_coreText.attributedString = [NSAttributedString attributedStringWithHTML:html renderer:^id<HTMLRenderer>(NSMutableDictionary* attributes) {
                                 CustomRenderer* renderer=[[CustomRenderer alloc] init];
                                 renderer.type=attributes[@"type"];
                                 renderer.size=CGSizeMake(16, 16);
                                 return renderer;
                             }];
m_coreText.frame = CGRectMake(0, 0, self.view.bounds.size.width, [m_coreText sizeThatFits:CGSizeMake(self.view.bounds.size.width, MAXFLOAT)].height);

UIScrollView* scroll = [[UIScrollView alloc] initWithFrame:self.view.bounds];
scroll.autoresizingMask=UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;
scroll.contentSize=m_coreText.frame.size;
[scroll addSubview:m_coreText];
[self.view addSubview:scroll];   

0 个答案:

没有答案