问题标签 [uitableviewautomaticdimension]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - 自动布局:无法弄清楚如何解决与扩展 UITableViewCell 内的面板相关的警告
我有以下布局UITableViewCell
:
布局由两个子视图组成:
TopView
(包含一个Show
按钮)BottomView
Show
(按下按钮时展开或折叠)。
BottomView
由 3 个子视图组成。这些子视图的约束是:
三个子视图中的每一个都包含一个
UILabel
固定到 的leading
,top
以及trailing
具有常量 == 8 的边。使用 >= 8 的约束将 固定到 的底部。这会强制与
UILabel
的顶部对齐。UIView
UILabel
UIView
三个中最左边的一个
UIViews
固定在 的前沿BottomView
。- 三者中最右边的
UIViews
被固定在BottomView
- 这三个中的每一个
UIViews
都固定在顶部BottomView
- 这三个中的每一个
UIViews
都固定在底部BottomView
- 三个视图具有相等的宽度和高度。
- 的底部
BottomView
被固定到UITableViewCell
内容视图的底部
这给了我我想要的布局:
我想要完成的是以下内容:
- 最初,
BottomView
应该是折叠的。 - 单击
Show
按钮应根据需要展开或折叠BottomView
。
我设法通过创建一个bottomViewHeightConstraint
最初卸载的来做到这一点。点击show
按钮激活/停用约束。
另一个TableViewCell.m
UIViewController.m
这很有效,但对不可满足的约束产生了很多警告。我想帮助了解我的哪些限制导致了警告。 不可满足的约束是:
bottomViewHeightConstraint
== 0
(需要,因为我想折叠底视图)
UIView
最左边和最右边的高度相等UIBottomView
(尝试停用,但警告没有消失)
- 最左边的 UIView 底部和底部之间的 8 像素距离
BottomView
(尝试停用,但警告没有消失)
- 最左边的 UIView 底部和底部之间的 8 像素距离
BottomView
(尝试停用,但警告没有消失)
ios - iOS8 如何动态固定 UITableViewHeaderFooterView 的高度大小?
我使用的方法如下
我刚刚尝试了下面的代码行,动态设置 UITableViewHeaderFooterView 高度大小。
self.tableView.estimatedSectionHeaderHeight = 100
self.tableView.sectionHeaderHeight = UITableViewAutomaticDimension
我有以下问题
在iOS9中,iOS10可以正常运行,并且可以正常显示。但是在iOS8中无法正确显示,并显示如下错误:
我的分析如下:
从错误提示可以看出问题是 NSLayoutConstraint: 0x7f8498d7b890 _UITableViewHeaderFooterContentView: 0x7f8498cb9200.height == 0
但我从未对 UITableViewHeaderFooterContentView 做出任何限制
我应该如何适配iOS8?
ios - 在 Swift 3 中动态调整 UITableViewCell 的高度失败
我有一个自定义的 UITableViewCell,我希望它根据我的标签文本内容更新高度。
但我尝试在我的 ViewController ViewDidLoad 中使用此代码:
它似乎没有更新高度。
我的细胞限制有什么问题?
谢谢。
ios - 将新行添加到具有动态高度单元格的表格视图
我有一个表格视图,其中单元格具有动态高度。我想在单击按钮时添加一个新行。我正在增加节值中的行数并重新加载表格视图。但这会导致崩溃。我在评论以下几行后尝试了这个
当这两个委托方法被评论时,这工作正常。但我想添加一个新行。动态高度单元应该是可能的。我怎样才能做到这一点?
ios - 如何构造复杂的表格元素
通常表格很容易管理,特别是因为自动布局可以完成大部分繁重的工作以确定单元格大小等等。但是,在某些情况下,事情会变得有点棘手,比如有一张民意调查表。
在这种情况下,投票由具有可变描述长度的标签、具有不同大小的图像和一组供用户选择的选项(本质上是嵌套表)组成。
----方法一-----
将每个投票分成多个单元格
优点:将来很容易向投票中添加更多字段,每个元素的单个单元格的布局更容易处理,尤其是在嵌套表的情况下。如果您需要退回到手动计算特定单元格的大小,您可以在保持其他一切自动运行的同时完成此操作。
缺点:如果您有多个民意调查,您需要跟踪哪个单元格对应于哪个民意调查,并且您通常需要做一些算术来跟踪什么。
----方法2-----
让包含所有这些元素的投票成为一个大单元格,并适当地设置它们之间的约束。
优点:它易于实现,以一对一的方式将您的模型映射到您的单元,而无需对数据进行多重解复用。
缺点:自动布局可能会因嵌套表格而变得棘手。例如,在这种情况下,对于单元格的高度,我曾经返回 UITableViewAutomaticDimension,直到我意识到这不会削减它,因为存在可以是任何大小的嵌套表。计算嵌套表的内容大小非常简单,但是,这意味着您必须计算所有其他元素,并且现在您返回的是特定高度而不是自动的。你的工作变得如此艰难。
----结尾----
你如何处理这样的问题?方法 1、2 还是完全不同的方法?我在这里简化了元素的结构以使内容更具可读性,其中涉及更多神秘的东西,例如包含您看到的元素的阴影视图,以创建浮动卡片的错觉等。
感谢大家。
PS:如果在某个地方已经有关于这个的答案,请指出我,我只是还没有找到太多关于这个的答案。希望这篇文章可以引发一些关于此事的讨论,并帮助我的其他人。
ios - 嵌入了 containerView 的静态单元格上的动态高度
我想使用自动布局来实现期望的行为(或者如果使用委托或其他东西无法做到这一点)。我拥有的是一个带有一个静态单元格的 tableView,这个单元格有一个 containerView,它有一个带有动态原型单元格的 tableViewController。
我想要的是能够使用自动布局来动态设置嵌入容器视图的静态单元格的高度。
这是故事板:
这些是我的约束(带有容器视图的 contentView 的静态单元格):
在静态单元格中拥有 containerView 的 viewController 中,我在ViewDidLoad方法上拥有的是:
并将 tableView 的委托与 staticCell 一起使用:
但是有了这个,静态单元格的高度真的很小......这意味着自动布局不能只用我设置的约束来设置他的内容的高度。我只说约束,因为如果我设置一个对将高度设置为 400 的 containerView 的 contentView 的更多约束,然后该单元格的高度为 400..
我只是想知道是否有自动布局的方法来设置静态单元格的高度以匹配 containerView 的高度。
我知道也许使用一个代表首先计算 containerView 的高度并使用这个高度来设置 heightForRow 可能可行我想知道是否有更简单的方法
太感谢了。
ios - 加载图像后调整 UITableViewCell 的大小
我使用动态高度表视图单元格和 Haneke 使用以下代码下载和缓存图像:
这里我需要在下载后设置图像时调整单元格高度。下载图像后如何调整表格视图单元格的大小。
ios - iOS 11:使用 UITableViewAutomaticDimension 使单元格大小适应内容
我希望 a 的单元格在 iOS 10 和 11 中UITableView
适应其内容的大小:
无需将 设置tableView.rowHeight
为显式数值,这是 iOS 11 中的新默认值。
AUIView
没有内在的内容大小,因此我为其高度锚设置了布局约束。但是,该锚在运行时会中断。
单元格需要哪些内部约束UITableViewCell
才能适应其内容?
这仅适用于iOS 11:
在iOS 10中,它会引发此运行时错误,并且单元格大小不适应:
[LayoutConstraints] 无法同时满足约束。以下列表中的至少一个约束可能是您不想要的。试试这个:(1)查看每个约束并尝试找出您不期望的;(2) 找到添加了一个或多个不需要的约束的代码并修复它。(“NSLayoutConstraint:0x17009c020 V:|-(0)-[test.MyView:0x11dd1acb0](活动,名称:'|':UITableViewCellContentView:0x11dd15220)”,“NSLayoutConstraint:0x17009c160 test.MyView:0x11dd1acb0.bottom == UITableViewCellContentView: 0x11dd15220.bottom (active)", "NSLayoutConstraint:0x17009c390 test.MyView:0x11dd1acb0.height == 300 (active)", "NSLayoutConstraint:0x17009be40 'UIView-Encapsulated-Layout-Height'
将尝试通过打破约束来恢复 NSLayoutConstraint:0x17009c390 test.MyView:0x11dd1acb0.height == 300 (active)
在 UIViewAlertForUnsatisfiableConstraints 创建一个符号断点以在调试器中捕获它。UIKit/UIView.h 中列出的 UIView 上的 UIConstraintBasedLayoutDebugging 类别中的方法也可能会有所帮助。
这适用于iOS 10 和 11,但不使用新的 iOS 11 方法,因为tableView.estimatedRowHeight
它不是UITableViewAutomaticDimension
:
ios - 如何使用 UILabel 的高度正确增加 UITableViewCell
关于堆栈溢出的这个问题有很多答案,请知道我已经看过但所有解决方案都不适合我。我在单元格中有两个 UILabel,一个有确定的宽度和高度,另一个是动态的,我将宽度设置为 <= 250,高度 >=50。我还为内容视图设置了所有四个边距,然后我尝试了下面的这两种方法来获取字符串的高度:
这个方法:
对于这两个,所附图像显示为 UILabel,正如任何人都可以看到的那样,它已经很遥远了。
我也尝试在estimatedHeightForRowAt 和heightForRowAt 方法中实现UITableViewAutomaticDimension,但这不起作用,两行之后,它不会进一步扩展。我尝试在 viewDidLoad() 方法中调用 estimatedRowHeight 和 rowHeight ,如下所示:
同样的事情,在 2 行后停止扩展。我还看到了有关实现这些方法的一些信息:
然而什么也没有!我已经浏览了 raywenderlich 教程等等。我不知道我做错了什么。这可能是一个重复的问题,但我向您保证,我已经尝试了所有解决方案,但对我没有任何效果。请有人可以看看这个,看看我做错了什么?