运行环境是,XCODE5.02,iOS7.0
这几天写的项目中有个分页的属性,问题一堆堆的,获得文本,然后分页,进行阅读,于是开始各种找相关内容
最初设想是UITextView的contentOffset改变来截图,结果未果
原因主要由2个
1.UITextView的contentOffset用来设定时,给予其值,但它实际未必会跑到指定的地方,所以,经常是比指定的值的一半都要少,设定一个很大的数也不行。。。不准确。
也试过将UITextView贴在ScrollView上,ScrollView的contentOffset设定的很准确,没有问题!
让我想起了一个关于UITextView的类目,不知道会不会好点。没试,改天遇到在试
- (id)styleString {
return [[superstyleString] stringByAppendingString:@"; line-height: 1.8em"];
}
2.就是UITextView的截图问题,这个问题,困扰我也是很久,找了半天。起因是因为上面的方法有问题,转而去拆分文本,放入数组,一次次给,然后一次次截图,结果问题出来了,因为给的文本刚好是一个屏幕的,用UITextView的layer做为截图视图,就回发现,截图图片全都是只有不到一半有文字,想过过很多原因,比如给个足够大得contentSize,
更改截图尺寸都不行!
最后发现当我给的文本占UITextView的高的3倍高度时,所截图的文本会铺满。。。
另外在计算文本尺寸的时候用到的方法是
CGSize totalTextSize = [text boundingRectWithSize:size
options:NSStringDrawingUsesLineFragmentOrigin
attributes:dic
context:nil].size;
这个传入的dic是文本的一些属性,具体可以参考http://shijue.me/show_text/521c396a8ddf876566000007
这里也遇到一个很奇怪的问题,,我是这样定义的一个dic
UIFont *helveticaBold =
[UIFontfontWithName:@"HelveticaNeue-Bold"size:12.0f];
NSDictionary *dic=[NSDictionarydictionaryWithObjectsAndKeys:helveticaBold,NSFontAttributeName,[UIColorblueColor],NSForegroundColorAttributeName,[UIColorblackColor],NSStrokeColorAttributeName, nil];
这样就能获得一个相对准确的高度,但是当我不给NSStrokeColorAttributeName属性时,问题出现了,返回的尺寸的高度一直都是比视图高度小那么一点点的高度,也就是一页就能完全装得下所有文字,可是前面已经设置过字体类型和大小了,以那个大小来说一页根本就装不了,难道不设定NSStrokeColorAttributeName这个属性,其他设定的无效?
暂且只能这么下定论了。
最后实在是折腾的不行了,跳出死结,使用了UILabel,用字数分页解决了所有问题,没有以上说的2种问题。