内容拥抱和内容压缩阻力、自动布局约束的问题

2023-12-01

我已经修改了问题,以提供更多且清晰的信息。

我想要一个动态表格视图单元格,具有灵活的 UITextView 高度和可选的 UIImageView。根据 UITextView 和可选的 UIImageView 的内容大小,可以缩小或扩展单元格。

这是我期望的(如下图):

  • 正常大小:TextView 的高度是固定的(比如 77)。 ImageView 的宽度和高度也是固定的(比如 130、130)
  • 当 TextView 的内容大小减小时,单元格会缩小并且 ImageView 会向上移动。
  • 当ImageView中没有图像时,ImageView不显示,单元格缩小。

enter image description here

下面是视图的结构:

  • mainView是contentView的子视图
  • topView、textView、bigImageView、bottomView 是 mainView 的子视图

enter image description here

然而,我实际得到的是如下。

  • 左图:如果内容尺寸很大,那么ImageView就看不到了。
  • 右图:如果内容大小为一行,可以看到ImageView,但其宽度和高度不固定 130、130

enter image description here

警告问题如下:

enter image description here

如果我通过选择“添加缺少的约束”来修复它,我得到的结果如下:

  • 右图显示TextView的高度不再灵活。

enter image description here

TextView的约束、内容拥抱优先级、内容压缩阻力和内在尺寸:

  • 我没有为此 TextView 使用固有大小

enter image description here

ImageView的约束、内容拥抱优先级、内容压缩阻力和内在尺寸:

  • 我为此 ImageView 使用了固有尺寸

enter image description here

我一直在尝试 TextView 和 ImageView 的拥抱优先级和压缩阻力优先级,但没有运气。结果都不是我所期望的。

请帮助指出设置中有什么问题以及如何实现我的目标。


这里棘手的部分似乎是,当有图像时,您希望它的尺寸​​为 130x130,但当没有图像时,您希望它被隐藏。

我的建议是为高度和宽度添加一个

当没有图像时,这将允许图像视图缩小到 0x0。

当有图像时,它将缩放到图像大小,但保持正方形。它永远不会大于 130x130。不完全是你想要的,但很接近。

我认为你不需要担心拥抱和压缩。

我认为要准确地完成您想要的操作需要代码。您需要为高度和宽度约束创建 IBOutlet,但这次使它们 =130。在代码中,当您将图像设置到图像视图中时,将代码中的约束常量设置为 130 或 0。我认为这是准确实现您所要求的效果的唯一方法。为此,请按住 CTRL 键从宽度和高度约束拖动到控制器的 .h 中并创建 IBOutlet。这就是我处理需要根据单元格数据模型状态做出决策的约束的方式。

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

内容拥抱和内容压缩阻力、自动布局约束的问题 的相关文章

  • iOS7及以上版本中如何在接收器和扬声器之间切换音频输出?

    我有一个音频播放器 可以选择在接近传感器通知 1 时将音频输出从扬声器切换到接收器 耳机 无论是否连接耳机 以下是我执行此操作的代码 void switchAudioOutput NSString output AVAudioSession
  • 如何修复C风格的for语句?

    什么是正确的修复方法C 风格的 for 语句对于下面发布的代码 目前我正在交战 C 风格的 for 语句已弃用 并将在将来删除 斯威夫特的版本 var ifaddr UnsafeMutablePointer
  • UITextField 字体大小在开始或停止输入字符时发生变化

    我见过很多线程 但没有找到解决这个问题的任何具体解决方案 我使用 XIB 创建了 UITextfield 尚未以编程方式对该字段执行任何操作 一旦我开始打字 文本字段的字体就会改变 一旦我将焦点移出文本字段 并且随着键盘消失 字体大小就会减
  • 检测您何时进入/退出 Xamarin.iOS 中的主线程

    Xamarin MonoTouch 有没有办法检测主线程中是否正在调用代码 我正在寻找类似于Java的东西EventQueue isEventDispatchThread 我发现 Swing 编程很方便assert时不时 或有时assert
  • 如何更改 UISwitch 关闭状态的默认颜色?

    我想更改 UISwitch 中 onTintColor 的颜色以表示关闭状态 切换位于表格视图中 并且以编程方式进行切换 settingsSwitch setBackgroundColor UIColor whiteColor settin
  • Swift 中的弹出视图

    我有一个弹出视图 没有选项卡栏 它弹出到带有选项卡栏的视图控制器 在带有选项卡栏的视图控制器中 我设置了一个单击按钮 以便弹出视图控制器 IBAction func PopUpClicked sender UIButton gt Void
  • 为什么我们在 @synchronized 块中传递 self ?

    我猜 synchronized 块不依赖于对象 而是依赖于线程 对吗 既然如此 我们为什么要传递 self 呢 synchronized是语言提供的用于创建同步作用域的构造 因为使用简单的全局共享互斥锁效率非常低 因此序列化每个单独的互斥锁
  • Swift 数组设置索引值不起作用

    我有一个方法 下面的内容 其中queue2只是一个 Int 我打印了很多东西 看看一切是否都正常 public func cool item Int println item println back queue2 insert item
  • 使用 Push Transition 效果更改 RootViewcontroller

    在我的iOS应用程序中 我需要更改应用程序之间窗口的rootviewController 因此 当我动态更改我的rootviewcontroller时 它会在更改之前轻拂视图 但我想要的是在更改rootviewcontroller时提供平滑
  • Swift:从自定义 UITableViewCell 中的 UITextField 检索文本并将其放入数组中

    我正在制作一个非常简单的应用程序 用户在第一个屏幕中输入人数 在第二个屏幕中 它会生成一些UITableViewCell基于用户在第一个屏幕中输入的数字 这UITableViewCell have a UITextField在其中 一旦用户
  • UIBezierPath 的起始和结束角度?

    我在 iOS 中使用如下代码编写了半圆UI贝塞尔路径 and CAShape层 clockWiseLayer CAShapeLayer alloc init CGFloat startAngle M PI 2 CGFloat endAngl
  • 如何从 NSString 中删除十六进制字符

    我面临一个与字符串中的某些十六进制值相关的问题 我需要从字符串中删除十六进制字符 The problem is when i print object it prints as BLANK line And in debug mode it
  • 从 RemoteIO 保存音频的示例?

    我进行了搜索 但没有找到任何从 RemoteIO 音频单元保存音频的好示例或教程 我的设置 使用 MusicPlayer API 我有几个 AUSamplers gt MixerUnit gt RemoteIO 音频播放效果很好 我想添加将
  • 更改 UITextField 辅助功能描述

    有没有办法将 UITextField 的辅助功能标签设置为 文本字段 之外的其他内容 因此 我不想将其称为 文本字段 而是将其命名为 代码验证字段 我的建议是不要试图在内置语音输出上智取系统 对于盲人用户来说 文本字段正在编辑 相当于 该项
  • swift 中的负数模

    负数模如何在 swift 中工作 当我执行 1 3 时 它给出 1 但余数是 2 其中有什么问题 雨燕余数运算符 计算余数 整数除法 a b a a b b where 是截断整数除法 在你的情况下 1 3 1 1 3 3 1 0 3 1
  • 如何使用自签名证书为 TLS 创建 iOS NWConnection?

    我正在尝试将 Apple 的新 NWConnection 类用于我的 MQTT 客户端 为了进行测试 我需要能够创建到本地测试代理的 TLS 连接 该代理具有自签名证书 到目前为止 我只是使用以下命令设置连接 self connection
  • 如何在 Xcode 4 中通过一个操作归档多个目标

    我有一个包含多个目标的项目 这些目标都适用于不同的 iOS 应用程序 例如 一个用于精简版的目标 另一个用于专业版的目标 我想立即构建并归档我的所有应用程序 目前 我对每个目标都有一个方案 我用它来独立归档每个应用程序 但现在我必须开始归档
  • UIImage:如何获取网站选项卡图标

    我正在开发一个 RSS 阅读器 我需要获取每个提要的图标 例如 如果我的提要是 google com 我想获取 G 图标并将其放入 UIImage 或其他内容中 关于如何实现这一目标有什么想法吗 最简单的方法是使用 Google NSStr
  • 如何自动为 Swift 类创建初始化程序?

    UPDATE 使用结构而不是类 struct 在很多方面都更好 它有自己的初始化器 这是我的模型课 是否有可能创建init自动方法 每次我都必须将所有变量一一初始化 这会花费很多时间 class Profile var id String
  • 通用类不会将委托调用转发给具体子类

    鉴于以下情况 protocol EntityType var displayString String get extension String EntityType var displayString String return self

随机推荐