iOS7 UITextView具有文件中的多个段落样式

时间:2014-02-21 22:41:09

标签: ios ios7 uitextview textkit

我正在为我的应用制作一个应用内指南,我想在其中布局支持动态类型的一些标题和文本段落。

使用单个UITextView最简单的方法是什么? (文本最好从单独的文本文件加载。)

有很多方法可以解决这个问题:

  • UIWebViews(over kill ??)
  • UITextView和NSAttributedString?
  • Text Kit - 这个简单的任务看起来很麻烦?

Example of desired layout/functionality

2 个答案:

答案 0 :(得分:1)

UIWebView是迄今为止针对此问题的最简单的解决方案。您可以在项目中将html文件创建为单独的文件,并在运行时从bundle中加载它。

NSString *path = [[NSBundle mainBundle] pathForResource:@"info" ofType:@"html"];
NSString *file = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:NULL];
NSURL *baseURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]];
[self.webView loadHTMLString:file baseURL:baseURL];

使用baseURL技巧,您甚至可以在html中使用,并让它在您的应用包中找到图像。

答案 1 :(得分:1)

使用UITextView应该可以满足您的需求。从文件中读取文本,并根据用户确定的类别大小设置字体。从iOS7开始,您可以使用initWithFileURL:options:documentAttributes:error:将简单的HTML文件作为属性字符串加载,因此您可以在文件中设置简单的样式和文本。在HTML中使用font:-apple-system-headline;font:-apple-system-subheadline;font:-apple-system-body;作为字体,以便在阅读HTML文件时在属性字符串中获取正确的字体。

您可以收听UIContentSizeCategoryDidChangeNotification通知,以便在用户更改其首选类别并设置字体或相应地重新加载数据时收听。