怎么在iOS中实现一个文本分页功能

  介绍

这篇文章给大家介绍怎么在iOS中实现一个文本分页功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

<强>静态文本分页

<强> 1。文本视图配置

<强> 1.1设置textContainer

<李>

设置textContainer的尺寸为视图尺寸

<李>

设置lineFragmentPadding为0,让文本两边距离视图为0,计算更为准确

, UITextView  * textView =, [[UITextView  alloc], initWithFrame: CGRectMake (originY, 0,还以为,kTextViewSize.width, kTextViewSize.height)];   ,//textContainer的最大高度,实际生成的视图高度将比此值?,,textView.textContainer.size  CGSizeMake (CGRectGetWidth (textView.bounds), CGRectGetHeight (textView.bounds));   ,//设置文本内容的左右间距为0=,textView.textContainer.lineFragmentPadding  0. f;

<强> 1.2文本视图基础设置

设置文本上下边间距为0,让文本能够撑满视图

, textView.textContainerInset =, UIEdgeInsetsZero;

设置文本视图连续布局

,//,允许连续布的局=,textView.layoutManager.allowsNonContiguousLayout 不,

<强> 1.3文本视图完整配置

, UITextView  * textView =, [[UITextView  alloc], initWithFrame: CGRectMake (originY, 0,还以为,kTextViewSize.width, kTextViewSize.height)];=,textView.backgroundColor  [UIColor  yellowColor];=,textView.textColor  [UIColor  blackColor];   ,//textContainer的最大高度,实际生成的视图高度将比此值?,,textView.textContainer.size  CGSizeMake (CGRectGetWidth (textView.bounds), CGRectGetHeight (textView.bounds));   ,//需将文本内容填充区域置0处理,计算更准确=,,textView.textContainerInset  UIEdgeInsetsZero;   ,//设置文本内容的左右间距为0=,textView.textContainer.lineFragmentPadding  0. f;=,textView.text 文本;=,textView.font  (UIFont  systemFontOfSize: 16);   ,//允许连续布的局=,textView.layoutManager.allowsNonContiguousLayout 没有;=,textView.userInteractionEnabled 没有;=,,textView.contentSize  textView.bounds.size;

<强> 2。文本视图数据配置

通过glyphRangeForTextContainer获取可容纳文本范围,再截取出文本,即可获得视图可展示的内容。

,//,获取文本视图可容纳文本范围   ,NSRange  textRange =, [textView.layoutManager  glyphRangeForTextContainer textView.textContainer):;   ,NSString  * textViewText =, [text  substringWithRange textRange):;=,,textView.text  textViewText;

<强> 3。关键代码展示

获取文本数据,对文本进行一段一段截取以达到分页。

, NSString  * text =, @"有一次,在我参加的一个晚会上,主持人问一个小男孩:你长大以后要做什么样的人?孩子看看我们这些企业家,然后说:做企业家。在场的人忽地笑着鼓起了掌。我也拍了拍手,但听着并不舒服。我想,这孩子对于企业究竟知道多少呢?他是不是因为当着我们的面才说要当企业家的呢?他是不是受了大人的影响,以为企业家风光,都是有钱的人,才要当企业家的呢\ n这一切当然都是一个谜。但不管怎样,作为一个人的人生志向,我以为当什么并不重要,不管是谁,最重要的是从小要立志做一个努力的人\ n我小的时候也曾有人问过同样的问题,我的回答不外乎当教师,解放军和科学家之类。时光一晃流走了二十多年,当年的孩子,如今已是四十出头的大人。但仔细想一想,当年我在大人们跟前表白过的志向,实际一个也没有实现。我身边的其他人差不多也是如此。有的想当教师,后来却成了个体户,想当解放军的,有人竟做了囚犯。我上大学时有两个同窗好友,他们现在都是我国电子行业里才华出众的人,一个成长为“康佳”集团的老总,一个领导着TCL集团。我们三个不期而然地成为中国彩电骨干企业的经营者,可是当年大学毕业时,无论有多大的想像力,我们也不敢想十几年后会成现在的样子,一切都是我们在奋斗中见机行事,一步一步努力得来的。与其说我们是有理想的人,不如说我们是一直在努力的人。\ n并非我们不重视理想,而是因为树雄心壮志易,为理想努力难,人生自古就如此。有谁会想的到,十多年前的今天,我曾是一个在街头彷徨,为生存犯愁的人?当时的我,一无所有,前途渺茫,真不知路在何处。然而,我却没有灰心失望,回想起来,支撑着我走过这段坎坷岁月的正是我的意志品格。当许多人以为我已不的行,该不行了的时候,我仍做着从地上爬起来的努力,我坚信人生就像马拉多纳踢的球,往往是在快要倒下去的时候”进球”获得生机的。事实也正是如此,就在“山重水复疑无路”的时候,香港一家企业倒闭给了我东山再起的机会,使我能够与掌握世界最新技术的英国科技人员合作,开发技术先进的彩色电视机,从此一举走出困境。\ n有人说,”努力”与“拥有”是人生一左一右的两道风景。但我以为,人生最美最不能逊色的风景应该是努力。努力是人生的一种精神状态,是对生命的一种赤子之情。努力是拥有之母,拥有是努力之子。一心努力可谓条条大路通罗马,只想获取可谓道路逼仄,天地窄小,所以,与其规定自己一定要成为一个什么样的人物,获得什么东西,不如磨练自己做一个努力的人。志向再高,没有努力,志向终难坚守;没有远大目标,因为努力,终会找到奋斗的方向。做一个努力的人,可以说是人生最切实际的目标,是人生最大的境界。\ n许多人因为给自己定的目标太高太功利,因为难以成功而变得灰头土脸,最终灰心失望。究其原因,往往就是因为太关注拥有,而忽略做一个努力的人。对于今天的孩子们,如果只关注他们将来该做个什么样的人物,不把意志品质作为一个做人的目标提出来,最终我们只能培养出狭隘,自私,脆弱和境界不高的人。遗憾的是,我们在这方面做得并不尽如人干净自己的意;   ,while  (text.length 祝辞,0),{//,才能添加文本视图展示,并获得剩余文本   text 才能=,[self  addTextViewWithText: text  originY: originY);   以前,}

怎么在iOS中实现一个文本分页功能