• ios开发-确定/自适应textView的高度



    昨天在做学院客户端的时候,随手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的内容。

    这是大家一直推崇的一种方法,可是我适用的时候,确实越到各种麻烦。

    不能够算出准确的高度,也就是说,计算出的高度太小了。不能显示全部内容。这可能和我的内容中包含 换行符有关吧。


    显然这个方法无法满足我的要求,于是乎,我自己折腾了会,想想用笨办法试,开心的是,居然完美解决了我的问题。


    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需要的准确高度。


    不过,我也有个疑惑,为什么第一步不可以省略。  为什么第二步和第三步不可以调换顺序?

    这都是我所不懂的。

    水平有限,先留着,以后有能力了再来解决。

    当然,如果哪位大神晓得这问题。   恳请指出。 谢谢。


    学习的路上,与君共勉。

  • 相关阅读:
    MySQL5.7 容器化安装
    什么是架构?——软件系统架构的定义
    服务端高并发分布式架构演进之路(转)
    CentOS7 增加回环地址
    三句话看明白jdk收费吗
    【转载】C#里怎么把string类型转换成double
    【转载】如何查看自己网站的搜索引擎收录量和索引量
    【转载】c# datatable 判断值是否存在
    【转载】C#中Datatable修改列名
    【转载】C#使用typeof运算符获取对象变量的具体类型Type
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3364627.html
Copyright © 2020-2023  润新知