UILabel的autolayout~

首先新建一个项目,拖一个label进来,然后让numberofLines = 0

然后再控制器里面写上

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        _label.text = @"aaaaaaaaaaaasfeaqrgrthrwthwrtyjhwryjwryjwryjwryjwryjwryjwryjwrytjwryjwrytjwrytjwrtjwrtyjwrtjwrtjqwrtjwrtjhwrtjhetjrthjqwrthjqrthqrthjqrtjhqrtjhqarthjqethjteqathqtehqthqathqrthqrtjhq";
    });

运行,效果如下

没有添加约束的情况下,给UILabel设置过长的内容不会改变他的frame

2.添加顶部约束和左部约束两个约束

再次运行

会发现下面的结果

label被拉长了,而且我们打印出其frame可以看出,其拉伸的非常长,1385.5;其实已经可以猜到,这差不多是设置的文字的总长度

,或者你可以用系统的API计算一下.

3.现在添加上左右三个方向的约束,如下图

再次运行程序,你会发现label没有变宽,但是自己变高了

如下图

同理,如果你添加了上下左约束,label就会高度不变,长度变长,总之label会向没有约束的地方延伸,具体向,而且优先横向延伸,并且横向延伸的情况下,label的文字始终是一行,及时label高度足够,也不会变成多行

4.再回到第二种情况,如果label只添加了上左约束,此时设置超过label长度的文字label是会在横向上无线延伸的,但是有一个属性

preferredMaxLayoutWidth可以来设置,label计算高度时所用的最大宽度(autolayout下并且label的numberOfLines = 0的情况下才生效)

也可以在IB里面设置,如下

在里面填写一个数值.然后将后面的勾选框勾上,此时在运行程序

label虽然没有设置右侧约束(或者宽度约束),但label得宽度不是横向无限延伸了,而是按照刚才填写的值进行横向延伸,并且也会自动变为多行,且自适应内容了

此时preferredMaxLayoutWidth限制的数值为200,我们现在给label加上右侧限制,距离父控件10个单位长度

此时运行结果如下

此时我们可以看到这种情况下,label的宽度是根据autolayout设置的约束来决定的,而高度则是根据设置的preferredMaxLayoutWidth = 200,来计算的,所以label上下出现了margin

时间: 2024-11-05 22:48:39

UILabel的autolayout~的相关文章

iOS开发 - 第05篇 - 项目 - 05 - 首页

1.下拉刷新 1.1 进入首页自动刷新 1.2 显示最新微博数量 注:弹出的UILabel应该添加到导航控制器的View上,而不应该添加到tableView上,否则会更随tableView一起滚动!!! 在发送请求成功后,调用下面方法(注意动画): 2.添加上拉刷新控件 1> 自定义HWLoadMoreFooter(XIB) 1. UILabel利用autoLayout填充View 2.添加转圈控件,勾选动画 2>提供类方法加载XIB控件 3> 添加到tableView的tableFoo

UILabel autolayout自动换行 版本区别

今天解决了一个与UILabel相关的Bug. 表现为在iOS7以上的系统中,UILabel能够自动换行,多行显示的字符串,而在iOS6上面则不会自动换行,直接打省略号. 正常情况下,numberOfLines设置为0,UILabel就会自动换行了. 但是在iOS6下面需要设置preferredMaxLayoutWidth,autolayout才会判断到折行的位置,才能正确的显示多行的UILabel 但是preferredMaxLayoutWidth设置为多少才是正确的呢? 如果你知道一个确切的w

有了Autolayout的UILabel

在没有Autolayout之前,UILabel的文字内容总是居中显示,导致顶部和底部会有一大片空缺区域 有Autolayout之后,UILabel的bounds默认会自动包住所有的文字内容,顶部和底部不再会有空缺区域

autolayout UIImageView 根据 UILabel的宽度变换位置

仅个人学习笔记,大牛勿喷 代码写法 使用Masonry 1 //昵称 2 3 _nameLableView = [[UILabel alloc]init]; 4 5 [_nameLableView setTextColor:RGB(78, 164, 232)]; 6 7 _nameLableView.font=[UIFont systemFontOfSize:14]; 8 9 //_nameLableView.backgroundColor = [UIColor grayColor]; 10 1

autolayout UILabel 设置最大宽度

label1.preferredMaxLayoutWidth = 100: label1.numberOfLines = 0; //自适应行数

iOS学习笔记 25:UILabel 的一个蛋疼问题

问题描述 在iOS8以下版本,numberOfLines设置为0,编译警告Automatic Preferred Max Layout Width before iOS8.0,同时不能换行. 问题分析 iOS8以下版本,要 UILabel 行数大于0,单numberOfLines设置为0是不行的,还需要指定 preferredMaxLayoutWidth,告诉UILabel折行的位置.这个问题到 iOS8 就不存在了,不需要设置preferredMaxLayoutWidth. 问题解决 如果用到

AutoLayout框架Masonry使用心得

AutoLayout框架Masonry使用心得 AutoLayout的一些基本概念 利用约束来控制视图的大小和位置,系统会在运行时通过设置的约束计算得到frame再绘制屏幕 两个属性Content Compression Resistance(排挤,值越高越固定)和Content Hugging(拥抱),Masonry代码如下 //content hugging 为1000 [view setContentHuggingPriority:UILayoutPriorityRequired forA

AutoLayout自动适配(转载)

使用AutoLayout注意事项: (1)设置控件的translatesAutoresizingMaskIntoConstraints为NO. (2) constraintWithItem:(添加约束的控件) attribute:(设置限制的属性,如左,右,高度,宽度等) relatedBy:(大于,等于,小于) toItem:(第二个控件约束,如果无,nil) attribute:(第二个控件的约束属性) multiplier:(乘数,如1.0) constant:(增加的常量); (3)用V

实现一个在autolayout下有宽度约束后,自动确定高度的view

我曾经遇到过一个问题:需要实现一个自定义的label(类似于UILabel),同时需要兼顾UILabel的大小自适应的特性.这个label通常宽度是固定的,通过autolayout指定其宽度约束,但不指定高度,让其根据内容自适应. 我们知道UIView的方法intrinsicContentSize可以帮助我们确定视图在autolayout下的大小,从而避免我们去设置其宽高的约束.于是我采用了这样的解决方案:将label的宽度作为其属性,使用前我必须指定label的宽度,然后label本身通过其宽