在iOS中显示文本内容
iOS中的文本系统提供了巨大的功能,同时仍然非常简单易用。UIKit框架包括几个高级类,用于管理文本的显示和输入。UIKit还包含一个类,用于显示HTML、CSS和基于javascript的web内容。
使用文本对象显示文本内容
文本对象以一系列字体、样式和大小显示格式化的文本。UIKit框架提供了三个主要类来在应用程序的用户界面中显示文本内容: L
- UILabel定义了一个 Label,它显示一个静态文本字符串。
- UITextField定义了一个 Text field,它显示一行可编辑的文本。
- UITextView定义了一个 Text view,它显示多行可编辑的文本。 尽管这些类实际上可以支持显示任意数量的文本,但Label和Text field是用于显示相对较少的文本,通常是一行。Text view是用来显示大量文本的。
从UITextView类型创建的Text view对象,显示格式化为段落、列和页面的文本,具有精细排版的所有特征,例如字距、连字符、复杂的断行和对齐。这些排版服务是通过一种叫做Text Kit的底层技术提供给UITextView的,Text Kit是一种功能强大的布局引擎,易于使用和扩展。See Using Text Kit to Draw and Manage Text for more information about Text Kit.
图1-1显示了出现在屏幕上的主要文本对象的示例。左边的图像显示了几种不同样式的文本字段,而右边的图像显示了单个文本视图。显示在背景上的标注是嵌入在用于显示不同视图的表格单元格中的UILabel对象。(这些例子取自UIKit Catalog (iOS): Creating and Customizing UIKit Controls示例应用程序,它演示了UIKit中可用的许多视图和控件。)
Figure 1-1 Text classes in the UICatalog app
当使用可编辑的Text field和Text view时,您应该始终提供一个Delegate对象来管理编辑会话。向委托发送几个不同的通知,让它们知道何时开始编辑,何时结束编辑,并给它们一个重写某些编辑操作的机会。例如,委托可以确定当前文本是否包含有效值,如果不包含有效值,则阻止编辑会话结束。当编辑最终结束时,你还可以使用委托来获取结果文本值并更新应用程序的数据模型。
由于它们的预期用法略有不同,因此每个文本视图的委托方法也略有不同。一个支持UITextField类的委托实现了UITextFieldDelegate协议的方法。类似地,一个支持UITextView类的委托实现了UITextViewDelegate协议的方法。协议中的方法都是可选的
Managing Text Fields and Text Views描述了文本字段和文本视图的委托消息序列,并讨论了由这些对象的委托执行的各种任务。有关UITextFieldDelegate和UITextViewDelegate协议方法的更多信息,请参见UITextFieldDelegate Protocol Referenceand UITextViewDelegate Protocol Reference.
使用Web views显示Web内容
web view对象显示基于web的内容。它是WKWebView类的一个实例,使您能够将本质上是一个微型web浏览器集成到应用程序的用户界面中。WKWebView类充分利用了用于在iOS中实现Safari的相同web技术,包括对HTML、CSS和JavaScript内容的完全支持。该类还支持用户在Safari中熟悉的许多内置手势。例如,您可以双击和按压来放大和缩小页面,还可以通过拖动手指在页面周围滚动。
除了显示内容之外,您还可以使用web view对象通过使用web表单从用户那里收集输入。像UIKit中的其他文本类一样,如果你在网页的表单上有一个可编辑的Text field,点击该字段会弹出一个键盘,以便用户可以输入文本。因为它是网络体验的一个组成部分,web view自己为你管理键盘的显示和关闭。
web view通过其关联的Delegate对象提供有关页面何时加载以及是否存在加载错误的信息。web Delegate是实现WKUIDelegate或WKNavigationDelegate协议的一个或多个方法的对象。Delegate方法的实现可以响应失败或执行与加载网页相关的其他任务。