UILabel的抗压缩、抗拉伸、以及控件的约束简述

今天来说一说UILabel的约束设置问题

首先主要介绍:Priority(控件约束的优先级)、Content Hugging Priority(控件抗拉伸优先级)、Content Compression Resistance Priority(控件抗压缩优先级),好的,开始一个个介绍。

1.Priority控件中每一个约束都有优先级,在xib和storyboard中很容易看到,如图:

在这里可以设置约束的优先级,优先级的取值范围是1~1000,控件的约束会有限满足优先级高的,控件的约束默认都是1000。

2.Content Hugging Priority(控件抗拉伸优先级) 优先级越高越不容易被拉伸,默认是250。

3.Content Compression Resistance Priority(控件抗压缩优先级) 和拉伸一样,优先级越高的越不容易和压缩,默认是750。

上面只是简单介绍一下,下面进入演练中。

#1在view中添加一个label,设置约束左:150,右150,垂直居中,最好给label设置背景颜色,这样比较容易看清label的长度。

运行之后,显示为

为什么会显示成这个样子,我们的label的居然被压缩了,这并不是我们想要的结果,这是因为我们设置label的约束优先级(没有设置就是默认的1000)要高于label自身的size,此时左右约束加上label的固有宽度已经大于屏幕的宽度了,所以label会被压缩。

既然提到了压缩,那就说一说抗压缩属性对label内容的影响。

Content Compression Resistance Priority(抗压缩的优先级)是750,而我们控件约束默认的是1000,此时肯定会先满足控件约束的,要体现抗压缩性也就是说label不被压缩这时要将label的左或者右约束优先级设置小于750。此时就会先满足抗压缩,控件的约束就先放一边了。我是将label的右约束优先级改成650了,显示结果为:

好了,肯定会有小伙伴骂我,我靠,这什么鬼,不要惊讶,这是正常的,因为我设置的约束有点大了,并且文字没换行,小伙伴们可以自己调试一下,多动手才能印象深刻。

时间: 2024-10-12 19:56:41

UILabel的抗压缩、抗拉伸、以及控件的约束简述的相关文章

WP移动设备压缩与解压控件Xceed Zip for .NET Compact Framework控件下载及详细介绍使用方法

Xceed Zip for .NET Compact Framework 控件是一款健全的文件压缩和解压缩控件,提供了灵活的ZIP.gZip.流压缩,分割和合并ZIP,创建自定义解压文件. 具体功能: 完全支持.NET Compact Framework 2.0以及以上 100%可管理的代码,由C#编写,面向对象设计 支持在硬盘.内存.FTP站点里创建新的ZIP文件,或者更新存在的ZIP文件 完全兼容WinZip12,支持LZMA算法 支持Zip64 Zip文件格式,对文件大小没有限制 支持从硬

android学习之LayoutInflater的用法,在myAdapter getView()里将多个TextView组件压缩成一个View控件,并在listView里显示

1.在LayoutInflater通常有下面2种初始化的方法,在Active里调用时很容易. 1. LayoutInflater inflater=LayoutInflater.from(context); 2. LayoutInflater inflater = (LayoutInflater)context.getSystemService (Context.LAYOUT_INFLATER_SERVICE); 2.创建myAdapter类时候在getView()方法里使用LayoutInfl

用mansard对cell的子控件设置约束,并且自动计算cell高度的问题,ios7警告

mansory设置cell子控件自上而下把cell的contentview撑开,就计算可以自动计算高度了,但是ios7会报下面的警告 Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the

IOS-OC-基本控件之UILabel

UILabel IOS开发中必不可少的基本控件,本文主要是列出常用的属性及方法(注XCode版本为7.2) 1.创建一个UILabel对象,在创建的时候可以设置起始位置和大小,也可以通过 uil.frame=CGRectMake(100, 100, 100, 100);来进行设置起始位置及大小. UILabel *uil=[[UILabel alloc] initWithFrame:CGRectMake(100, 100, 100, 100)]; 2.设置文本内容 uil.text=@"hell

ATL 64位压缩和解压控件Xceed Zip for x64

Xceed Zip for x64控件是一款ActiveX控件,行业里最先进的ZIP压缩库,采用ASE加密技术对文件.文件夹进行压缩与解压缩,控件是完全独立的对象,采用ATL 3.0编写,可容易地集成于您的64位应用程序中. 具体功能: 控件完全支持WinZip 9.0以上,并且兼容AES强加密技术 100%兼容PKZIP 2.04g 和PKZIP 4.5格式 支持Zip64 Zip文件格式,并且创建ZIP文件几乎没有大小限制 支持BZip2(BWT)压缩方法,可以压缩15%-20% 兼容最新的

5、利用控件TVCLZip和TIdFTP压缩文件并上传到FTP的线程单元pas 改进版

用到临界区 保护写日志的函数: 递归函数 删除目录下的所有文件: 循环创建或判断FTP的目录: 可改进的地方:循环压缩深层次目录的所以文件: 实现断点续传,或断点下载: 1 {******************************************************************************* 2 Copyright (C), 2014-2020, aicaipiao 3 File name: UFtpContentThd.pas 4 Author: li

Masonry部分用法(控件数组等间隔排序)

(转自)http://www.jianshu.com/p/1d1a1165bb04 简要 自动布局最重要的是约束:UI元素间关系的数学表达式.约束包括尺寸.由优先级和阈值管理的相对位置.它们是添加剂,可能导致约束冲突 .约束不足造成布局无法确定 .这两种情况都会产生异常. 使用前:AutoLayout关于更新的几个方法的区别 setNeedsLayout:告知页面需要更新,但是不会立刻开始更新.执行后会立刻调用layoutSubviews. layoutIfNeeded:告知页面布局立刻更新.所

Android开发之基本控件和详解四种布局方式

Android中的控件的使用方式和iOS中控件的使用方式基本相同,都是事件驱动.给控件添加事件也有接口回调和委托代理的方式.今天这篇博客就总结一下Android中常用的基本控件以及布局方式.说到布局方式Android和iOS还是区别挺大的,在iOS中有Frame绝对布局和AutoLayout相对布局.而在Android中的布局方式就比较丰富了,今天博客中会介绍四种常用的布局方式.先总结一下控件,然后再搞一搞基本方式,开发环境还是用的Mac下的Android Studio.开始今天的正题, 虽然A

iOS 约束 代码自动布局 正方形控件

我们说,有时候界面要求可点击的控件是类似于collectionviewcell的样式出现,横排出现三个或者四个等宽等高的UIButton控件:或者,不可点击以横排展示的方式出现三个或者四个UIImageView控件:再或者,是几段文字,当然文字很少要求是正方形的. 但当项目需要制作出几个控件横排排列,大小相同,且呈现正方形时,就可以借鉴我的经历. 以前的做法是: 一.横向约束,竖向固定大小 三个UIButton,约束成:等宽等高.中部横向对齐.button1对上和左边界约束.button1进行高