iOS Masonry约束自定义TableViewCell自适应行高的约束冲突的问题

iOS15 Xcode13 UITableView Xib 自定义Cell 闪退问题 今天刚更新到Xcode13 ,然后用iOS15的真机运行代码,点到一个有自定义Cell的页面,直接崩了,崩在了cellForRowAt 方法的 初始化dequeueReusableCell 这一行,控制台打印, [LayoutConstraints] Changing the translatesAutoresizingMaskIntoConstraints property of a UITableViewCell that is managed by a UITableView is not ... 阅读详情

纯代码使用Masonry进行子控件约束的时候(尤其是tableViewCell的子控件自动适应行高),经常会出现下面约束警告

2017-12-29 16:24:42.645364+0800 project[3804:770025] [LayoutConstraints] Unable to simultaneously satisfy constraints.
    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 code that added the unwanted constraint or constraints and fix it. 
[
    <MASLayoutConstraint:0x6040002b7d60 UILabel:0x7fa5e0c5c490.top == UITableViewCellContentView:0x7fa5e0c5c280.top + 10>,
    <MASLayoutConstraint:0x6040002b85a0 UILabel:0x7fa5e0c5c770.top == UILabel:0x7fa5e0c5c490.bottom + 10>,
    <MASLayoutConstraint:0x6040002b8f00 UILabel:0x7fa5e0c5d010.top == UILabel:0x7fa5e0c5c770.bottom + 5>,
    <MASLayoutConstraint:0x6040002b94a0 UILabel:0x7fa5e0c5d5d0.top == UILabel:0x7fa5e0c5d010.bottom + 5>,
    <MASLayoutConstraint:0x6040002b9800 UILabel:0x7fa5e0c5d8b0.top == UILabel:0x7fa5e0c5d5d0.bottom + 5>,
    <MASLayoutConstraint:0x6040002b9aa0 UILabel:0x7fa5e0c5d8b0.bottom == UITableViewCellContentView:0x7fa5e0c5c280.bottom - 10>,
    <NSLayoutConstraint:0x600000290810 UITableViewCellContentView:0x7fa5e0c5c280.height == 43.6667>
]

Will attempt to recover by breaking constraint 
<MASLayoutConstraint:0x6040002b85a0 UILabel:0x7fa5e0c5c770.top == UILabel:0x7fa5e0c5c490.bottom + 10>

Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.

这里写图片描述

如上图所示:提示

Will attempt to recover by breaking constraint 
<MASLayoutConstraint:0x7fef047b95c0 UILabel:0x7fef047f5fe0.top == UILabel:0x7fef06824c80.bottom + 10>
  • 1
  • 2

网上查的解决方案都是下面这种…………

cell.contentView的约束没有处理,走的是默认的autoresizingMask约束模式, 
查看自己写的约束,发现cell的contentView没有用massonry处理(用massonry处理约束的控件,子控件.translatesAutoresizingMaskIntoConstraints = NO;子控件的这个属性自动被设置为NO);

所以只需要在

- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{
    if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
        self.contentView.translatesAutoresizingMaskIntoConstraints = NO;

    }
return self;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

就可以解决约束冲突的问题

然而尝试了下,并没有什么卵用!!!!! 继续报下面的警告

2017-12-29 16:34:15.155566+0800 project[3867:812969] [LayoutConstraints] Changing the translatesAutoresizingMaskIntoConstraints property of the contentView of a UITableViewCell is not supported and will result in undefined behavior, as this property is managed by the owning UITableViewCell. Cell: <ZYVendorManageCell: 0x7fcac0864800; baseClass = UITableViewCell; frame = (0 0; 320 44); layer = <CALayer: 0x60400042c680>>
2017-12-29 16:34:15.168135+0800 project[3867:812969] [LayoutConstraints] Unable to simultaneously satisfy constraints.
    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 code that added the unwanted constraint or constraints and fix it. 
[
    <MASLayoutConstraint:0x6040002b35c0 UILabel:0x7fcabedbb9b0.left == UITableViewCellContentView:0x7fcabef07860.left + 10>,
    <MASLayoutConstraint:0x6040002b3680 UILabel:0x7fcabedbb9b0.right == UITableViewCellContentView:0x7fcabef07860.right - 10>,
    <NSLayoutConstraint:0x6000002828a0 UITableViewCellContentView:0x7fcabef07860.width == 0>
]

Will attempt to recover by breaking constraint 
<MASLayoutConstraint:0x6040002b3680 UILabel:0x7fcabedbb9b0.right == UITableViewCellContentView:0x7fcabef07860.right - 10>

Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

这里写图片描述

这里写图片描述

前提控制器写下如下代码,会自动计算行高

- (void)viewDidLoad {
    [super viewDidLoad];
    self.tableView.rowHeight = UITableViewAutomaticDimension;
    self.tableView.estimatedRowHeight = 300;
}
  • 1
  • 2
  • 3
  • 4
  • 5

解决方案

//这句代码并没有起什么作用
self.contentView.translatesAutoresizingMaskIntoConstraints = NO;
  • 1
  • 2
//真正的问题出现在这里 --  最终发现其实是这个约束出现了问题,需要调整约束级别
Will attempt to recover by breaking constraint 
<MASLayoutConstraint:0x7fef047b95c0 UILabel:0x7fef047f5fe0.top == UILabel:0x7fef06824c80.bottom + 10>
  • 1
  • 2
  • 3

这里写图片描述

约束警告问题,完美解决!!!!


translatesAutoresizingMaskIntoConstraints translatesAutoresizingMaskIntoConstraints属性和autolayout有关, 如果你定义的view想用autolayout, 就将translatesAutoresizingMaskIntoConstraints设为NO, 如果你使用的不是autolayout, 就将translatesAutoresizingMaskIntoConstraints设为YES... 阅读详情

相关推荐

ML307A模组连接ONENET平台(AT指令步骤教程)

ML307A 是一款集成度高、体积小的物联网通信模组,支持多种无线通信协议,如 LoRa、NB-IoT 等。它具有低功耗、远程通信等特点,适用于多种物联网场景。支持 LoRa 和 NB-IoT 等多种无线通信标准。提供丰富的 GPIO 接口。内置多种传感器支持。UART 接口:用于与微控制器或其他设备通信。GPIO 接口:可以连接外部传感器或执行器。电源接口:用于供电。OneNET 是中国移动推出的一款物联网开放平台,它提供了从数据采集、存储到分析的一站式解决方案。

xiewengeng的博客 5479

Beginning Auto Layout Tutorial in iOS 7: Part 2

Note from Ray: Tutorial Team member Matthijs Hollemans (the iOS Apprentice Series author) has ported this tutorial to iOS 7 as part of the iOS 7 feast. We hope you enjoy! In part 1 of this Au

Wave的专栏 2591

labview设置工业摄像头外部触发

使用labview对海康MV-CA013-GM相机设置外部触发。 一、硬件部分 1、硬件引脚定义 2、触发模式设置 相机的触发模式分为两种,一种是内触发模式、另外一种是外触发模式。 3、接线图 信号线的地要跟给信号的设备共地。信号线给高电平时触发拍照。 二、软件部分 1、创建vision acquisition 2、选择使用的摄像头。 3、选择模式。 4、在Acquisition Control中设置这些选项。 5、设置保存图片路径 设置保存路径和保存图片的格式。点击完成即可 参考:https:/

qq_43493715的博客 5665

iOS Xcode为Subview设置的约束条件在iOS 8 & Xcode 6中出现异常

问题重述: 为collectionview设计了一个hearderView,而这个headerView是一个自定义的myview,在这个自定义中有一个subview,它的约束条件是设置到superview的。在Xcode 6和iOS 8的组合下运行,上述的subview完全没有按照原来设计的约束,而是以从(0,0)为原点自己重置layout。但在iOS7 + Xcode 5/6 和iOS8

野草志 2557

机械臂 关节电机选型计算

电机 机械臂

hisen92的专栏 8982

Conformal LEC逻辑等价性检查介绍和参考脚本

分为三个产品:Conformal L、Conformal XL、Conformal GXL。L是功能性检查,XL支持复杂数据通路的综合和APR优化,GXL支持定制的stdcell和定制memory的检查。Cadence Conformal Equivalence Checker,就是常说的LEC,可以用来验证RTL、门级网表、甚至spice网表的逻辑等价性。在setup模式下,读入库、golden设计、有修改的设计,并指定一些option。对于简单的设计,通过GUI来做LEC也是可以的。

weixin_44606964的博客 918

Masonry约束自定义TableViewCell自适应行高的约束冲突的问题

问题@iOS-zhouyu类似https://blog.youkuaiyun.com/kuangdacaikuang/article/details/78805615 下面是我的情况:设置一个空白cell,通过cellModel的height属性动态设置高度。 self.tableView.estimatedRowHeight = UITableViewAutomaticDimension; ...

小天空的博客 2433

基于RK3562J开发板的MCP2518FD CAN-FD控制器驱动适配与测试指南

本文详细介绍了在RK3562J开发板上适配MCP2518FD CAN-FD控制器驱动的完整流程。内容涵盖内核驱动配置、设备树修改、编译烧录以及实际通信测试,重点分享了调试方法,旨在帮助开发者快速为嵌入式系统扩展高速CAN-FD通信能力,适用于汽车电子、工业控制等场景。

jenkins8butler的博客 495

iOS--Masonry解决 tableViewCell 重用时约束冲突

Masonry-UItableViewCell 重用时约束冲突的解决

Setoge的博客 4599

【ACP】2025-最新-疑难题解析- 练习二汇总

全球加速是优化公网访问的,负载均衡是分发流量的,公网 NAT 网关是处理公网 IP 的,高速通道是建私网连接但不直接提供固定私网地址功能。C 是客户端加密方式,D 是 ECS 云盘加密,都不属于 OSS 服务器端加密。某企业想使用云服务器 ECS + 负载均衡 SLB + 弹性伸缩 (Auto Scaling) 的架构搭建一个企业级门户网站,技术负责人对于负载均衡和弹性伸缩配合使用没有经验,于是将他理解的两种产品配合使用的一些技术细节列成了一个表单,并请作为架构师的您帮他做一下鉴别,以下哪些项是正确的?

jundao1997的专栏 293

SpringBoot DDoS防护:限流与验证全面指南

SpringBoot应用DDoS防护摘要 本文介绍了SpringBoot应用防护DDoS攻击的方案。DDoS攻击通过分布式请求耗尽服务器资源,导致服务不可用、成本激增等风险。防护需遵循分层防御、弹性设计等原则。 核心方案包括: 令牌桶限流:使用Guava RateLimiter控制请求速率 滑动窗口算法:通过Redis+Lua实现精确的分布式限流 微服务集成:利用Spring Cloud Gateway统一管理API限流 实施建议: 关键接口默认添加限流保护 监控系统实时警报异常流量 结合WAF等多层防护措

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 2486

UITableView-FDTemplateLayoutCell 与Masonry 一起解决不定高度的cell

控制器// // ViewController.m // shiyan // // Created by aimee on 16/9/28. // Copyright © 2016年 aimee. All rights reserved. //#import "ViewController.h" #import <UITableView+FDTemplateLayoutCell.h> #im

lybeen2007的博客 1636

大模型新闻摘要生成质量评估工具

大模型新闻摘要生成质量评估工具 关键词:大模型、新闻摘要、质量评估、自然语言处理、算法 摘要:本文将探讨大模型新闻摘要生成质量评估工具的设计与应用。首先介绍大模型新闻摘要生成的背景和问题,然后深入分析质量评估的难点和重要性,接着介绍大模型的

AI天才研究院 827

swift 缓存行高_Swift-Cell行高自适应之SnapKit

本文以UITableView 使用SnapKit 来设置约束为例:1. 列表页设置高度自适应、预估行高// 自动计算行高tableView.rowHeight = UITableView.automaticDimension// 设置预估行高, 必须要写, 否则打印垃圾log日志, 提示约束冲突tableView.estimatedRowHeight = 4002. cell 中的操作一般情况下只...

weixin_39598472的博客 819

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

代码添加constraint,设置translatesAutoresizingMaskIntoConstraints为NO的原因

在用代码为

1993奇葩 2万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

iOS-原生纯代码约束总结(二)之 AutoLayout

一,概述 AutoLayout相比AutoResizing更加实用,是可以完全替代AutoResizing的一种自动布局方式。而在使用AutoLayout前,我们必须理解一个属性,那就是translatesAutoresizingMaskIntoConstraints。该属性表示autoresizingMask和autolayout两种方式的转换。这个属性对于在代码中生成的vie...

weixin_34284188的博客 780

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

autolayout入门(一)

有三种方式来代码创建约束,可以使用layout anchors,nslayoutconstraint类或者使用Visual Format语言。 关于UIView的translatesAutoresizingMaskIntoConstraints属性 最近在对AutoLayout的学习中发现,很多人似乎对translatesAutoresizingMaskIntoConstraints的误...

binglan520的专栏 382

关于iOS自动布局

这里做一个通过代码实现自动布局的Demo,通过IB来做的就不讲了,网上相关的资料很多,这里给出一个写的不错的链接,有兴趣的同学自己看吧. iOS7自动布局教程(一) iOS7自动布局教程(二) --英文 要谈自动布局,那基本的视图是第一步,做了一个这样的ViewController ? 1 2 3 4

lkeplei的专栏 570

iOS 快速定位约束冲突

iOS 快速定位约束冲突 什么是约束冲突 当你使用 AutoLayout 布局,你添加的约束不满足或者会造成系统布局冲突的时候,控制台就会打印冲突日志。 约束冲突示例 [LayoutConstraints] Unable to simultaneously satisfy constraints. Probably at least one of the constraints in the following list is one you don't want. Try this: (1)

小桥流水哗啦啦,iOS Coder 哒哒哒 2919

iOS 使用Masonry出现约束警告定位视图

在使用Masonry时候,有时候虽然界面显示正常,但是log里面会出现如下类似的警告。链接:https://www.jianshu.com/p/838b012f12a0。可以显示出控件的名字,一目了然就可以看到有问题的控件约束,修改即可。MASAttachKeys(控件XX), 可以传多个控件。2. 初始化控件XX 下面 添加 代码。1.通过断点找到有问题的控件XX。3.run,看log。

gcs的博客 1014

【AutoLayout案例07-如何通过代码添加约束 Objective-C语言】

【AutoLayout案例07-如何通过代码添加约束 Objective-C语言】

madoca的博客 796

view的translatesAutoresizingMaskIntoConstraints属性

translatesAutoresizingMaskIntoConstraints属性和autolayout有关, 如果你定义的view想用autolayout,就将translatesAutoresizingMaskIntoConstraints设为NO,如果你使用的不是autolayout,就将translatesAutoresizingMaskIntoConstraints设为YES,

u013406800的专栏 770
上一篇: Objective-C 对 URL 进行 URLEncode 编码
下一篇: 深入浅出 JavaScriptCore
lin_transform
博客等级 码龄9年 3粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值