目前有三个需求,1.给每个字体加边框;2.随着文字的内容的变化改变控件大小;3点击单词能够识别出该单词。
其实要实现这三个功能已经不是上层API能做的事情了,这时候你要理解清楚UITextView的整个实现过程,才有可能找到解决方案。
a.苹果Text Kit Framework
从上面可以看出UITextVIew在框架中的位置,实际上它继承了UIScrollView。
从上面可以看出UITextVIew内部是怎么实现文字显示和排版布局的。具体的实现可以看这篇文章: https://developer.apple.com/library/ios/documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/CustomTextProcessing/CustomTextProcessing.html
其实这个效果的实现思路就是给每个字加上一个背景,那么怎么给每个字后面加一个黑色的,比原来稍微大一些的字呢?
我原来的想法是用另外一个UITextView去实现这个功能,后来我分析这个方案是有可能失败的,因为你放大字体,那么就有可能导致排版和原来不一样,那么这个方案就失去了意义,因为编程就必须考虑代码的健壮性。
后来就在网上寻找怎么去画一个字?最后的代码像是这样的:
-( void )drawRect:( CGRect )rect{ NSMutableDictionary *attributes = [[
其实要实现这三个功能已经不是上层API能做的事情了,这时候你要理解清楚UITextView的整个实现过程,才有可能找到解决方案。
a.苹果Text Kit Framework
从上面可以看出UITextVIew在框架中的位置,实际上它继承了UIScrollView。
从上面可以看出UITextVIew内部是怎么实现文字显示和排版布局的。具体的实现可以看这篇文章: https://developer.apple.com/library/ios/documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/CustomTextProcessing/CustomTextProcessing.html
b.给每个字体加边框
其实这个效果的实现思路就是给每个字加上一个背景,那么怎么给每个字后面加一个黑色的,比原来稍微大一些的字呢?
我原来的想法是用另外一个UITextView去实现这个功能,后来我分析这个方案是有可能失败的,因为你放大字体,那么就有可能导致排版和原来不一样,那么这个方案就失去了意义,因为编程就必须考虑代码的健壮性。
后来就在网上寻找怎么去画一个字?最后的代码像是这样的:
-( void )drawRect:( CGRect )rect{ NSMutableDictionary *attributes = [[