昨天在做学院客户端的时候,随手clean了下项目。

不过xcode又闹脾气了,textview里面的字体大小居然在真机运行的时候普遍小了2号..

这下蛋疼了。应该我项目里面textview的frame都是写死的。  比如

, , , )];这样。

可是字号小了之后.. 意味着我UI的布局都对应变了...

蛋疼的。所以我就去找方法,想通过确定textview的大小,然后动态的设置frame。

同时,通过这件事也让我学到了不少,还是太嫩了。哎~。 继续努力。

下面介绍我学习过程中接触的两种办法。

1.计算输入文字在指定字体、指定容器和指定换行方式下的size.

CGSize constraintSize;

constraintSize.;

constraintSize.height = MAXFLOAT;

CGSize sizeFrame =[textContent sizeWithFont:textView.font constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];

textView.frame = CGRectMake(,,sizeFrame.width,sizeFrame.height);

其中,textContent指textview的内容。

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

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


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

2.利用 contentSize.height

一。初始化

, , , )];

这里的height可以先随便设置,反正最后还得根据对应的内容进行修改。

二。加入到视图中

[self.view addSubview:textview];


三。重新定义大小。

textview., , , textview.contentSize.height);


这里,我们把 height 用 textview.contentSize.height 替换,就能准确算出对应的高度了。

结合以上三步骤。 就能算出textview需要的准确高度。


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

这都是我所不懂的。

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

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

学习的路上,与君共勉。

ios开发-确定/自适应textView的高度的更多相关文章

  1. ios开发中关闭textview控件的虚拟键盘

    在ios开发中,textfield控件在点击的时候出现虚拟键盘,关掉虚拟键盘可以通过虚拟键盘中的done button和点击view中的任意地方来关闭虚拟键盘. 1.第一种方法是textfield控件 ...

  2. iOS 开发中单元格cell高度自适应

    高度自适应分下面两种情况 1.用代码自定义的cell 用代码自定义的cell,cell高度自定义需要我们手动的去计算每个cell的字符串高度.然后返回对应的高度即可. 2.用XIB 或者 StoreB ...

  3. ios开发之自定义textView

    自定义textView,从理论上讲很简单,根据需求自定义,比如我在开发中的需求就是现实一个字数的限制以及根据输入的文字改变提示剩余字数,那么开始我的基本思路就是自定义一个View,而里面包含一个子控件 ...

  4. iOS 开发中中 textView 作为子控件点击输入文本,然后退出文本的方式

    方式1. 使用当双击输入的时候弹出键盘同时,使用手势和通知监听键盘的方法实现 代码如下: 1. 监听键盘通知 [[NSNotificationCenter defaultCenter] addObse ...

  5. ios开发之--实现TextView提示文字并且输入字数限制

    实现字数控制和限制,并展示当前输入的字符串长度,以及按钮的点击状态,代码如下: 1,设置代理 @interface FKViewController ()<UITextViewDelegate& ...

  6. iOS开发——使用Autolayout生成动态高度的TableViewCell单元格

    步骤一.TableViewCell中使用Autolayout 要点:Cell的高度必须在Constraints中指明,但不能定死,需要让内部由内容决定高度的View决定动态高度. 如UILabel设置 ...

  7. iOS开发--UILabel根据内容自动调整高度

    写法一:对象方法,传入:字体/最大尺寸. 即可得到宽高, 最大尺寸主要限制宽度,如果是一行就给个{MAXFLOAT,MAXFLOAT};如果是多行就限制X值,Y值随便给 - (CGSize)sizeW ...

  8. 【swift,oc】ios开发中巧用自动布局设置自定义cell的高度

    ios开发中,遇到自定义高度不定的cell的时候,我们通常的做法是抽取一个frame类,在frame类中预算好高度,再返回. 但是苹果出来自动布局之后...春天来了!!来看看怎么巧用自动布局设置自定义 ...

  9. iOS开发 UILabel实现自适应高宽

    UILabel是iOS开发常用的控件.UILabel的属性需要了解,UILabel的特殊显示效果也需要我们掌握.UILabel自适应高宽度是很多初学者遇到的技术性难题.比如段文字,要让他完全地分行显示 ...

随机推荐

  1. SQLite入门与分析(四)---Page Cache之事务处理(1)

    写在前面:从本章开始,将对SQLite的每个模块进行讨论.讨论的顺序按照我阅读SQLite的顺序来进行,由于项目的需要,以及时间关系,不能给出一个完整的计划,但是我会先讨论我认为比较重要的内容.本节讨 ...

  2. SPRING IN ACTION 第4版笔记-第九章Securing web applications-005-Applying LDAP-backed authentication

    一. 1.This method is the  LDAP analog to  jdbcAuthentication() @Override protected void configure(Aut ...

  3. log4j:ERROR A "org.jboss.logging.appender.FileAppender" object is not assignable to a "org.apache.lo .

    log4j:ERROR A "org.jboss.logging.appender.FileAppender" object is not assignable to a &quo ...

  4. chrome和火狐获取资源

    获取网站数据: chrome下获取网站数据可以用如下方式去获取: 而火狐则可以按以下方式获取: 在该目录下找到你想要的数据. 获取本地的数据: chrome下获取本地的数据: firefox下获取本地 ...

  5. Sencha 基础Demo测试,三种showView的方法

    直接贴代码吧 Ext.define("build.controller.MainController",{ extend:"Ext.app.Controller" ...

  6. iframe控件

    function goTo(url) { document.getElementById("iframeid").src = url; //获得要显示的页面,当点击时就会在ifra ...

  7. 【转】提示框第三方库之MBProgressHUD iOS toast效果 动态提示框效果

    原文网址:http://www.zhimengzhe.com/IOSkaifa/37910.html MBProgressHUD是一个开源项目,实现了很多种样式的提示框,使用上简单.方便,并且可以对显 ...

  8. ubuntu桌面右上角键盘图标不见解决方法

    今天出现了这个问题,桌面右上角的键盘图标不见,找到解决方法如下: 打开终端,分别输入以下命令即可: killall ibus-daemon 这个表示结束进程 ibus-daemon -d 这个表示重启 ...

  9. STL序列式容器

    1.vector      空间运用的灵活性.      实现技术——关键是对大小的控制以及重新配置时的数据移动效率.      配置新空间.数据移动.释还旧空间      erase(int pos ...

  10. 设计模式之Memento(备忘机制)

    Memento备望录模式定义:memento是一个保存另外一个对象内部状态拷贝的对象.这样以后就可以将该对象恢复到原先保存的状态. Memento模式相对也比较好理解,我们看下列代码: public ...