如何修复奇怪的 NSLayoutConstraint 错误,这些错误似乎不会影响自定义 UITableViewCell 中的布局

2024-02-24

每次我的自定义 UITableViewCells 由 tableView:cellForRowAtIndexPath: 绘制时,控制台都会吐出一堆 NSLayoutConstraint 不一致的信息。我理解其中大部分:

 Unable to simultaneously satisfy constraints. ...boring stuff..

 "<NSLayoutConstraint:0x8b0eb60 V:|-(NSSpace(20))-[UILabel:0x8b0cb30]   (Names: '|':UITableViewCellContentView:0x8bd7d40 )>",
"<NSLayoutConstraint:0x8b0db70 V:[UILabel:0x8b0cb30]-(NSSpace(8))-[UITextView:0x91dba00]>",
"<NSLayoutConstraint:0x8b0dba0 V:[UITextView:0x91dba00]-(NSSpace(20))-|   (Names: '|':UITableViewCellContentView:0x8bd7d40 )>",
"<NSLayoutConstraint:0x8b0d5a0 V:[UITextView:0x91dba00(1000)]>",
"<NSAutoresizingMaskLayoutConstraint:0x8b00330 h=--& v=--& V:[UITableViewCellContentView:0x8bd7d40(44)]>"
)

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x8b0db70 V:[UILabel:0x8b0cb30]-(NSSpace(8))-[UITextView:0x91dba00]>

或者至少我认为我是这样的。真正让我困惑的是我的 UITableViewCell 正在工作并且似乎没有任何约束被打破。我认为错误中列出的一些约束,特别是最后一个,是系统添加的约束。如果我不使用 .xibs 并且仅在代码中添加约束,这可能吗?错误中的最后一行对我来说特别突出,因为我正在动态生成每个代码的高度,但我注意到其中的 44,即默认单元格高度。

默认情况下是否添加了其中一些约束,例如当我致电时[super updateConstraints]?我将如何解决这些错误或找出它们来自哪里?

顺便说一句,我知道深入使用 Core Text 的效果比我的 UITextView + 自动布局解决方案要好得多。现在我正在研究缓存单元高度。但是,这些布局错误是否会导致滚动时出现滞后,或者仅仅是因为我使用自动布局来计算屏幕上每个单元格的高度?

我已经发帖了Github 上发生这些错误的项目 https://github.com/shawnthroop/Post-UITableViewCells如果有人想下载并亲自体验其中的怪异。


根据亚伦的建议,我在初始化时手动更改单元格的高度,以便在自动布局进行计算时约束可以控制它。最初没有设置内容框架,默认框架是{0, 0, 320, 44}。这太小了,无法满足约束,并且错误会显示在控制台中。

同样,当重用单元格时,旧的 contentView.frame(由自动布局计算)会保留下来。如果您使用相同数量的文本(或更少),这很好,但是如果新单元格需要更多文本(因此需要更大的 contentView.frame),我们会遇到同样的问题,contentView.frame 太小并且不能满足约束条件。

因此,在我的自定义 UITableViewCell 中,我现在手动设置 contentView.frame.heightinitWithStyle: and prepareForReuse:一个足够大的常量,可以容纳任意数量的文本(足以容纳 App.net 帖子和一些额外的空间)。这可以确保自动布局进行计算时不会出现错误。

我什至可能会考虑将此值设置得稍高一点,甚至是动态设置,以适应 iOS 7 中的动态文本。至于滚动,似乎错误并没有加剧滚动的不稳定,这都是因为自动布局计算(我思考)。下一步是计算单元高度viewDidAppear:叫做...

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何修复奇怪的 NSLayoutConstraint 错误,这些错误似乎不会影响自定义 UITableViewCell 中的布局 的相关文章

  • iPhone 3GS 上的 ARM 与 Thumb 性能比较,非浮点代码

    我想知道是否有人有关于 iPhone 3GS 上 ARM 与 Thumb 代码性能的硬性数据 特别是对于非浮点 VFP 或 NEON 代码 我知道 Thumb 模式下的浮点性能问题 更大的 ARM 指令的额外代码大小是否会在某个时刻成为性能
  • 背景大小:封面在视网膜显示屏上看起来像素化

    可以看到我正在开发的网站here http ourcityourstory com dev 如果你查看 iPad 3 或 iPhone 4 上的 关于 或 联系 部分 背景看起来全都是疯狂的像素化 我有background size set
  • UITesting、XCTest 当前 ViewController 类

    简单的问题 我有一个按钮可以执行到下一个视图控制器的操作 我想写 UI XCTest 来告诉我它是否打开了我想要的视图控制器 UI 测试框架无法访问您的应用程序代码 这使得无法对实例进行类断言 你不能够directly告诉屏幕上的控制器的类
  • 在回调函数中调用目标c函数

    如何在回调函数中调用目标c函数 回调函数 static OSStatus inputRenderCallback void inRefCon AudioUnitRenderActionFlags ioActionFlags const Au
  • 如何在应用程序项目中使用 Cocoa Touch 框架

    我熟悉构建单个 iOS 应用程序 但我坚持使用 Cocoa Touch 框架向多个应用程序共享通用代码 问题 框架的头文件不可见 无法链接到消费应用程序项目 我做了什么 1 我创建了一个名为 libTestFramework 的项目 Coc
  • UISlider不会自动重绘

    我的应用程序上有一个 UISlider 有时我不仅需要更新它的值 还需要更新它的minimumValue 值已更改 但如果我调用 setValue 方法或为滑块分配新值 它会具有新值 但滑块不会将自身重新绘制到该新值应有的位置 我怎样才能重
  • 用于具有转换的非导航应用程序的视图控制器/NIB 架构?

    我正在修补一个 iPad 应用程序 就像许多 iPad 应用程序一样 它不使用 UINavigation 根视图控制系统 因此我没有每个应用程序 视图 的自然所有权 我基本上有两个基本视图 文档列表视图和文档编辑视图 我正在使用 UIVie
  • 保存来自 TrueDepth 相机的深度图像

    我正在尝试保存 iPhone X TrueDepth 相机的深度图像 使用AVCam照片滤镜 https developer apple com library content samplecode AVCamPhotoFilter Lis
  • 将 Armadillo C++ 库导入 Xcode

    我是 Mac 用户 正在尝试安装和导入 C Armadillo 库 以下是我到目前为止所采取的步骤 1 我从其网站下载了犰狳库 2 我仔细阅读了下载文件中的 Readme txt 文件 解释了如何安装它 3 我使用CMake将犰狳下载文件制
  • 访问 google reader 的 Endpoints API 时出错

    我正在尝试在iPhone APP中实现google reader 到目前为止我已经成功收到了sid and auth 当我尝试使用以下命令调用 Endpoints API 时 问题就出现了GET 这是代码 ASIHTTPRequest re
  • iPhone SDK中的短信正文

    我需要从我的 iPhone 应用程序发送短信 SMS 的正文是以编程方式创建的 因此 当我点击按钮时 短信应用程序应该打开 并在其中预先输入我的消息 有人知道怎么做吗 需要帮忙 提前致谢 世宾 您无法设置短信正文 根据官方 SDK 您可以从
  • 在 Swift 中以编程方式为 iOS 制作带有名字首字母的图像,例如 Gmail

    我需要在 UITableView 中显示与其姓名相对应的每个用户的个人资料图片 在下载图像之前 我需要显示一张带有他名字的第一个字母的图像 就像在 GMail 应用程序中一样 如何在 Swift for iOS 中以编程方式执行此操作 不需
  • 带有 allowedEditing 的 UIImagePickerController 不允许平移裁剪

    我在这里看到这个问题 UIImagePicker 允许编辑卡在中心 https stackoverflow com questions 12630155 uiimagepicker allowsediting stuck in center
  • UILabel 中的文本未垂直居中

    我使用以下代码创建了一个标签 func setupValueLabel valueLabel numberOfLines 1 valueLabel font UIFont name Avenir Black size 50 valueLab
  • cameraOverlayView 防止使用 allowedEditing 进行编辑

    在我的应用程序中 使用以下行在拍摄照片后对其进行编辑 移动和缩放 效果很好 imagePicker setAllowsEditing YES 但如果我还使用cameraOverlayView 则编辑模式将不再起作用 屏幕出现 但平移和捏合手
  • XCode 7 中的 AWSS3TransferManagerUploadRequest

    我今天升级到 Xcode 7 Swift 2 0 我的项目正在使用 CocoaPods 我正在 POD 文件中导入所有与 AWS 相关的文件 我已经设置了桥接标头 并导入了 Amazon 告诉我的所有文件 在升级到 Swift 2 0 之前
  • 在 UITableView 的部分标题文本下方添加一些边距

    我已经设计了标题文本的样式 func tableView tableView UITableView cellForRowAtIndexPath indexPath NSIndexPath gt UITableViewCell let ce
  • 当 ViewController 从 UIStoryboard 实例化时,isMemberOfClass 返回 no

    我有一个 OCUnit 测试类 PatientTestViewControllerTests 下面是界面 interface PatientTestViewControllerTests SenTestCase property nonat
  • WKWebview 中的 iCLoud 文档选择器关闭容器视图

    我有一个 WKWebview 加载基于 Web 的 UI 我希望用户能够从其 iCloud 文档上传文件 我已授予正确的权限 并且可以浏览 iCloud 文档 但是 当我选择文件或单击取消按钮时 文档选择器视图也会关闭 WKWebview
  • 如何观察UserDefaults的变化?

    我有一个 ObservedObject在我看来 struct HomeView View ObservedObject var station Station var body some View Text self station sta

随机推荐