昨天在做学院客户端的时候,随手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. Android Spinner(级联 天气预报)

    activity_spinner.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayo ...

  2. UR #13 Yist

    第一次打UR,打了一个半小时就弃疗了QAQ 这是我唯一一道考试的时候做出来的题目,其他两道连暴力都懒得写了 很容易发现对于每个要删除的点 我们找到左边第一个比他小的不用删除的点,右边第一个比他小的不用 ...

  3. 【零基础学习iOS开发】【02-C语言】09-流程控制

    前言 1.默认的运行流程 默认情况下,程序的运行流程是这样的:运行程序后,系统会按书写顺序执行程序中的每一行代码.比如下面的程序 1 #include <stdio.h> 2 3 int ...

  4. 107. Binary Tree Level Order Traversal II

    题目: Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from ...

  5. P140、面试题24:二叉搜索树的后序遍历序列

    题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则返回true,否则返回false.假设输入的数组的任意两个数字都互不相同. 测试用例: 1)功能测试(输入的后序遍历的序列 ...

  6. HBase Shell输入命令无法删除问题解决技巧

    一.引言: HBase shell使用过程中,使用CRT客户端,命令输入后无法删除一直困绕着我,今天终于受不了,几番度娘,谷哥之后,终于有了解决方法,特共享给大家. 二.操作步骤 secureCRT中 ...

  7. git svn rebase出现了checksum mismatch的错误

    http://stackoverflow.com/questions/3156744/git-svn-rebase-checksum-mismatch This solution was the on ...

  8. The Material Sourcing Process Failed To Create Picking Suggestions in INVTOTRX (文档 ID 2003806.1)

    In this Document Symptoms Cause Solution References Applies to: Oracle Inventory Management - Versio ...

  9. Android开发之parseSdkContent failed Could not initialize class android.graphics.Typeface

    在进行android开发过程中,忽然发现经常弹出来parseSdkContent failed 这个错误,然后google了下解决办法 方法1: 删除.android文件 重启eclipse. 该方法 ...

  10. Innodb 锁系列2 事务锁

    上一篇介绍了Innodb的同步机制锁:Innodb锁系列1 这一篇介绍一下Innodb的事务锁,只所以称为事务锁,是因为Innodb为实现事务的ACID特性,而添加的表锁或者行级锁. 这一部分分两篇来 ...