昨天在做学院客户端的时候,随手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. javascript数据变量类型判断(JS变量是否是数组,是否是函数的判断)

    function isArray(o) { return Object.prototype.toString.apply(o) === “[object Array]”;}function isFun ...

  2. pointcut 表达式的含义

    execution(* com.spring.dao.*.add*(..)) 第一个*表示任意返回值 第二个*表示com.spring.dao包中所有类 第三个*表示以add开头的所有方法 (..)表 ...

  3. 钣金的折弯成型工艺(Press Braking)

    钣金的折弯成型:金属板材的弯曲和成型是在弯板机上进行的,将要成型的板材放置在弯板机上,用升降杠杆将制动片提起,工件滑动到适当的位置,然后将制动片降低到要成型的板材上,通过对弯板机上的弯曲杠杆施力而实现 ...

  4. C++拷贝对象

    简介 对象的创建中,常常有这样的需求,就是把对象复制一份. 而复制有三种方法: 1.通过初始化来复制 例如:Object o1(10); Object o2=o1; 2.通过赋值来复制 例如:Obje ...

  5. Android sd卡读取数据库

    先在 Manifest 里添加权限 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE&q ...

  6. Civil3D二次开发 启动Civil3D异常

    用Com方式启动Civil3D时,经常会在第一次启动时出现各种异常. 1. RPC_E_CALL_REJECTED 0x80010001 被呼叫方拒绝接收呼叫 解决方案:外部程序通过COM启动Auto ...

  7. 理解extern char s[100]与extern char *s

    在x.c中定义了一个字符数组 char s[100],在l.c中进行引用extern char s[200], 有些c程序新手经常把它写成extern char *s. 这两种写法的含义一样吗? 首先 ...

  8. SSH应该使用密钥还是密码?

    关于SSH,几乎每个人都同意密钥要优于密码,更安全,并且更先进,但我并不同意这个观点. 虽然密钥的确可以更好,但它有着还没被意识到的严重风险,并且我认为比得到妥善管理的密码更不安全. 通常密钥更好的理 ...

  9. javascript 简单的计算器

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx. ...

  10. 解决ImportError: cannot import name HTTPConnection的方法

    在写python程序的时候,使用from httplib import HTTPConnection,在run的时候提示ImportError: cannot import name HTTPConn ...