度低于图像总高度则文字长度都是缩短的。用
CTTypesetterSuggestLineBreak 函数动态的计
算每一行里的字数,因为每一行里面的中文字、标点符号、数字、字母都不一样所以可以显示
的字数肯定也是不同的,所以需要作这样的计算。这样循环直至文本结束,就可以知道有多
少行字了。再根据字体高度和行间距得出总的文本高度,如果文本高度大于图片总高度那么
显示区域的
Frame 高度就是文本的高度,反之亦然。
5. 绘制文本:
设置每一行绘制文本的区间:
[cpp]
CFRange lineRange = CFRangeMake(currentIndex, lineLength);
建立文本行对象
CTLineRef line = CTTypesetterCreateLine(typeSetter, lineRange);
CGFloat x = [self textOffsetForLine:line inRect:self.bounds];
// 设置一行的位置
CGContextSetTextPosition(context, x, y);
// 绘制一行文字
CTLineDraw(line, context);
6. 其他功能:
在完成文本绘制功能后可以加入调整文字大小的功能,和图片的放大的功能。
文字大小可以通过直接设置字体大小后重新绘制文本来实现。
图片放大可以在视图上添加一个新的
UIImageView 来展示放大后的图片,并且加入动
画效