setContentHuggingPriority和setContentCompressionResistancePriority的使用
需求:
两个label并排显示,文字内容由服务器返回,label宽度以文字内容自适应,label之间间距大于等于10.


需要考虑以下情况:
- 当两个label的宽度和 < 屏幕宽度时,各自设置约束,无需处理,都可以完全展示。
- 当两个label宽度和 > 屏幕宽度时,让左label压缩,优先让右label文字完全显示。
为了实现需求,我们可以使用下面2个api
这2个api是UIView的方法,在使用约束布局时生效。//设置控件的拉伸优先级
//控件的拉伸优先级数值默认是250,数值越大,越不易被拉伸
- (void)setContentHuggingPriority:(UILayoutPriority)priority forAxis:(UILayoutConstraintAxis)axis;//设置控件的抗压缩优先级
//控件的抗压缩优先级数值默认是750,数值越大,越不易被压缩。
- (void)setContentCompressionResistancePriority:(UILayoutPriority)priority forAxis:(UILayoutConstraintAxis)axis;
setContentCompressionResistancePriority(抗压缩),
- 这个值越低,会在宽度不够的情况下,优先被压缩。
- 这个值越大,会在宽度不够的情况下,优先完全展示。
常见的视图默认给的值是UILayoutPriorityDefaultHigh = 750。
举例:一个labelA的抗压缩系数为500,labelB为750,那么空间不足的情况下,LabelA会打点显示。
上面的例子中,我们设置左边的label抗压缩为500(小于右侧label即可),即可达到效果。
先看默认情况,设置为750,xib会有报错,并且run效果和xib效果不一致:


改成749(只要小于右侧的抗压缩系数即可) ,左侧label优先被挤压,run效果和xib效果一致,就不贴图了:

在试试设置为751,左侧label扬眉吐气,完全展示,右侧label被挤压:

在看看另一个API的作用
setContentHuggingPriority(拉伸),
- 这个值越小,就会在宽度多余的情况下,被拉伸。
- 这个值越大,就会在宽度多余的情况下,优先保持原尺寸。
默认情况下: HuggingPriority == 250
举例:一个labelA的拉伸系数为250,labelB为500,那么空间充足的情况下,LabelA会显示更多。
看代码前,先把label之间间距大于等于10 改为 等于10,这样才会出现父视图宽度 大于 子视图宽度和的情况。
先看默认情况,都设置为250,xib会有报错,并且run效果和xib效果不一致:

在看把左侧label拉伸系数改为100, 左侧填满的父视图剩余空间

左侧label的拉伸系数改为500,左侧内容宽度不变,右侧内容填满父视图空间

总结一下:
在宽度不够的情况下:
setContentCompressionResistancePriority(抗压缩)生效
- 这个值越小,优先被压缩。
- 这个值越大,优先完全展示。
在宽度足够的情况下:
setContentHuggingPriority(拉伸)生效
- 这个值越小,优先被拉伸。
- 这个值越大,优先保持原尺寸,拉伸其他视图。
值越小,越会被压缩,拉伸。
值越大,越会保持原有尺寸。
相关文章:
setContentHuggingPriority和setContentCompressionResistancePriority的使用
需求: 两个label并排显示,文字内容由服务器返回,label宽度以文字内容自适应,label之间间距大于等于10. 需要考虑以下情况: 当两个label的宽度和 < 屏幕宽度时,各自设置约束,无需处理&#…...
java springboot yml文件配置 多环境yml
如果是properties改用yml,直接改后缀,原文件中的配置语法改用yml的语法即可,系统会自动扫描application.properties和application.yml文件(注意:改了之后需要maven 命令 clean一下,清个缓存)。 …...
DMBOK知识梳理for CDGA/CDGP——第一章数据管理(附常考知识点)
第一章 数据管理 第一章在 CDGA|CDGP考试中分值占比均不是很高,主要侧重点是考概念性的知识,理解数据管理的目标原则、还有与其他概念的区别点,同时掌握几个关键核心的图(车轮图、六边形图、语境关系图)。总体来说难度…...
065:cesium设置带有箭头的线材质(material-9)
第065个 点击查看专栏目录 本示例的目的是介绍如何在vue+cesium中设置带有箭头的线材质,请参考源代码,了解PolylineArrowMaterialProperty的应用。 直接复制下面的 vue+cesium源代码,操作2分钟即可运行实现效果. 文章目录 示例效果配置方式示例源代码(共82行)相关API参考…...
Java常用API
1 常用API API(:Application Programming Interface ):应用程序编程接口1.1 Math类 Math中没有构造方法,类的成员都是静态的(static修饰),通过类名就可以直接调用常用方法方法名说明public static int abs(int a)获取参数a的绝对值public static double ceil(double a) …...
【C++ 学习 ⑥】- C++ 动态内存管理详解
目录 一、new 表达式和 delete 表达式的工作机理 二、operator new 和 operator delete 函数 2.1 - 标准库定义 2.2 - 重载 三、定位 new 表达式 四、常见面试题 4.1 - malloc/free 和 new/delete 的区别 4.2 - 内存泄漏 在 C 中,new 和 delete 既是关键字&…...
【5.21】六、自动化测试—常见技术
目录 6.2 自动化测试常见技术 1. 录制与回放测试 2. 脚本测试 3. 数据驱动测试 6.2 自动化测试常见技术 自动化测试技术有很多种,这里介绍3种常见的技术: 1. 录制与回放测试 录制是指使用自动化测试工具对桌面应用程序或者是Web页面的某一项功能进…...
JavaScript中的事件循环机制,包括事件循环的原理、宏任务和微任务、事件队列和调用栈、以及如何优化事件循环
JavaScript中的事件循环机制是JavaScript运行引擎的核心之一,它决定了代码的执行方式和效率。本文将从几个方面介绍JavaScript中的事件循环机制,包括事件循环的原理、宏任务和微任务、事件队列和调用栈、以及如何优化事件循环。 一、事件循环的原理 事…...
【华为OD机试c++】解压报文【2023 B卷 |200分】
题目描述 为了提升数据传输的效率,会对传输的报文进行压缩处理。 输入一个压缩后的报文,请返回它解压后的原始报文。 压缩规则:n[str],表示方括号内部的 str 正好重复 n 次。 注意 n 为正整数(0 < n < 100&a…...
JS中Array的forEach、map、filter方法区别?
一:基本用法 1、forEach()函数用于对数组中的每个元素执行给定的函数,而它不返回任何值,它只是对每个元素调用传入的函数。这个函数可以接受三个参数:当前元素的值、当前元素的索引和整个数组。 const arr [1, 2, 3]; arr.forE…...
Java的Arrays类的sort()方法(41)
目录 sort()方法 1.sort()方法的格式 2.使用sort()方法时要导入的类 3.作用 4.作用的对象 5.注意 6.代码及结果 (1)代码 (2)结果 sort(&…...
Redis安装及其配置文件修改
一、redis 安装 点击即可下载 https://download.redis.io/releases/ 将下载后的包通过xftp上传到服务器 解压,我这边是解压到/usr/local目录下 -- 创建路径 mkdir /usr/local/redis -- 解压 tar -zxvf redis-4.0.0.tar.gz -C /usr/local/redis 为防止编译失败&am…...
VSOMEIP3抓包数据
环境 $ cat /etc/os-release NAME"Ubuntu" VERSION"20.04.6 LTS (Focal Fossa)" IDubuntu ID_LIKEdebian PRETTY_NAME"Ubuntu 20.04.6 LTS" VERSION_ID"20.04" HOME_URL"https://www.ubuntu.com/" SUPPORT_URL"https:/…...
基于PyQt5的图形化界面开发——Windows内存资源监视助手[附带编译exe教程]
基于PyQt5的图形化界面开发——Windows内存资源监视助手[附带编译exe教程] 0. 前言1. 资源信息获取函数——monitor.py2. UI界面——listen.py3. main.py4. 运行效果5. 编译 exe 程序6. 其他PyQt文章 0. 前言 利用 PyQt5 开发一个 windows 的资源监视助手,在使用虚…...
Linus Torvalds发布了第一个Linux内核6.4候选版本
导读自Linux内核6.3发布和下一个内核系列Linux 6.4的合并窗口开放以来,已经过去了一段时间,近日,Linus Torvalds发布了第一个RC(候选发布版)的里程碑,供公众测试。 为期两周的Linux内核6.4合并窗口现已关闭…...
由浅入深Dubbo核心源码剖析环境介绍
目录 1 框架介绍1.1 概述1.2 运行架构1.3 整体设计 2 环境搭建2.1 源码拉取2.2 源码结构2.3 环境导入2.4 测试2.5 管理控制台 1 框架介绍 1.1 概述 Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能&#…...
Java 远程连接 SQLite 数据库
Java 可以使用 JDBC API 来连接 SQLite 数据库。但是,SQLite 不支持远程连接,因为它是一种文件数据库,需要直接访问数据库文件。 如果您需要从远程位置访问 SQLite 数据库,可以将 SQLite 数据库文件放在共享文件夹中,…...
网安面试题大全(附答案)
本文面试题汇总: 防范常见的 Web 攻击 重要协议分布层 arp协议的工作原理 rip协议是什么?rip的工作原理 什么是RARP?工作原理 OSPF协议?OSPF的工作原理 TCP与UDP区别总结 什么是三次握手四次挥手? tcp为什么要三次握手…...
windows 系统扩容C盘注意事项
windows系统大家都不陌生,是大家用的最多的操作系统。在实际的使用中,遇到需要扩容C盘的情况不是很多,但是如果遇到了,有以下几个事项需要大家注意: 剩余空间是否充足 不论当前服务器是物理服务器还是虚拟机ÿ…...
接入支付宝沙箱环境
1、这里有几个重要数据要拿到,一个是支付宝的公钥和私钥,一个是支付的网关,和支付的APPID。这几个数据是要写到代码中的 官方手册:文档地址 1.1 配置沙箱应用环境 https://openhome.alipay.com/develop/sandbox/app 1.2 配置接口…...
前端 SSE(Server-Sent Events)实现详解:从原理到前端 AI 对话应用
为什么前端越来越需要“流式能力”?在传统 Web 应用中,前端与后端的通信方式大多是 “请求—响应” 模式: 前端发起请求,后端计算完成后一次性返回结果。但随着应用形态的演进,这种模式越来越显得“笨重”:…...
告别GPIO模拟!用GD32的Timer+DMA高效驱动WS2812灯带(附完整工程)
用GD32的TimerDMA实现WS2812灯带零CPU占用驱动方案 在嵌入式LED控制领域,WS2812系列灯带因其简单的单线通信协议和丰富的色彩表现,成为许多项目的首选。然而,传统的GPIO模拟时序方法存在明显的性能瓶颈——当灯珠数量增加时,CPU会…...
Bilibili API Python客户端深度解析与实战指南
Bilibili API Python客户端深度解析与实战指南 【免费下载链接】bilibili-api 哔哩哔哩常用API调用。支持视频、番剧、用户、频道、音频等功能。原仓库地址:https://github.com/MoyuScript/bilibili-api 项目地址: https://gitcode.com/gh_mirrors/bi/bilibili-ap…...
RBF 神经网络车速预测模型功能说明书
基于RBF神经网络车速预测模型,根据历史车速信息,预测未来预测时域内的车速信息的时序预测模型,根据预测的信息对车辆进行控制可以对混动汽车的能量管理具有一定的参考意义 1.文件包括,训练工况(.mat数据,工…...
告别虚拟机!在WSL2的Ubuntu里5分钟搞定LVGL v9.2模拟器(SDL2显示)
在WSL2中5分钟快速搭建LVGL v9.2开发环境 对于习惯Windows开发环境的嵌入式工程师来说,传统虚拟机方案往往显得笨重且资源占用高。WSL2的出现彻底改变了这一局面——它不仅能提供完整的Linux内核支持,还能实现与Windows系统的无缝文件互通和硬件加速。本…...
Minecraft源码反编译终极指南:DecompilerMC完整使用教程
Minecraft源码反编译终极指南:DecompilerMC完整使用教程 【免费下载链接】DecompilerMC This repository allows you to decompile any minecraft version that was published after 19w36a without any 3rd party mappings, you just need to execute the script o…...
甩掉作图焦虑,我把商业级出图压缩到10分钟,设计团队必备AI工具推荐
作为一个在设计行业熬了快十年的工作室主理人,我无数次在甲方的要求下气的想撞墙——不是因为脑子里没有创意,而是因为团队的视觉交付效率根本跟不上客户“朝令夕改”的节奏。你如果是设计师一定懂这种窒息感:早会刚定下的视觉方向࿰…...
DAMOYOLO-S模型Android端集成实战:移动端实时检测应用开发
DAMOYOLO-S模型Android端集成实战:移动端实时检测应用开发 如果你是一名Android开发者,想在自己的App里加入实时物体检测功能,比如识别摄像头里的猫猫狗狗、车辆行人,但又担心模型太大、速度太慢,那今天这个实战项目就…...
ChromeDriver vs GeckoDriver终极选择指南:如何为php-webdriver项目挑选最佳浏览器驱动
ChromeDriver vs GeckoDriver终极选择指南:如何为php-webdriver项目挑选最佳浏览器驱动 【免费下载链接】php-webdriver PHP client for Selenium/WebDriver protocol. Previously facebook/php-webdriver 项目地址: https://gitcode.com/gh_mirrors/ph/php-webdr…...
从安装到实战:在快马生成项目中体验openclaw本地安装与即时数据抓取
从安装到实战:在快马生成项目中体验openclaw本地安装与即时数据抓取 最近在做一个数据采集的小项目,需要从网站上抓取一些公开信息。经过调研发现openclaw这个工具很适合我的需求,但网上关于它的本地安装和实际应用的完整教程比较少。于是我…...
