昨天在做学院客户端的时候,随手clean了下项目。 不过xcode又闹脾气了,textview里面的字体大小居然在真机运行的时候普遍小了2号.. 这下蛋疼了。应该我项目里面textview的frame都是写死的。 比如 UITextView *textview = [[ UITextView alloc ] initWithFrame : CGRectMake ( 0 , 0 , 320 , 330 )];这样。 可是字号小了之后.. 意味着我UI的布局都对应变了... 蛋疼的。所以我就去找方法,想通过确定textview的大小,然后动态的设置frame。 同时,通过这件事也让我学到了不少,还是太嫩了。哎~。 继续努力。
下面介绍我学习过程中接触的两种办法。 1.计算输入文字在指定字体、指定容器和指定换行方式下的size.CGSize constraintSize; constraintSize. width = 300 ; constraintSize. height = MAXFLOAT ; CGSize sizeFrame =[textContent sizeWithFont:textView.font constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap]; textView.frame = CGRectMake( 0 , 0 ,sizeFrame.width,sizeFrame.height); 其中, textContent指textview的内容。 这是大家一直推崇的一种方法,可是我适用的时候,确实越到各种麻烦。 不能够算出准确的高度,也就是说,计算出的高度太小了。不能显示全部内容。这可能和我的内容中包含\n换行符有关吧。
显然这个方法无法满足我的要求,于是乎,我自己折腾了会,想想用笨办法试,开心的是,居然完美解决了我的问题。 2.利用 contentSize . height
一。初始化UITextView *textview = [[ UITextView alloc ] initWithFrame : CGRectMake ( 0 , 0 , 320 , 330 )]; 这里的height可以先随便设置,反正最后还得根据对应的内容进行修改。 二。加入到视图中[ self . view addSubview :textview]; 三。重新定义大小。textview. frame = CGRectMake ( 0 , 0 , 320 , textview. contentSize . height ); 这里,我们把 height 用 textview. contentSize . height 替换,就能准确算出对应的高度了。结合以上三步骤。 就能算出textview需要的准确高度。
不过,我也有个疑惑,为什么第一步不可以省略。 为什么第二步和第三步不可以调换顺序? 这都是我所不懂的。 水平有限,先留着,以后有能力了再来解决。 当然,如果哪位大神晓得这问题。 恳请指出。 谢谢。 学习的路上,与君共勉。 |
|
来自: 叹落花 > 《UITextView》