根据内容动态设置UIScrollView高度和UITableView高度

发布于 2024-10-31 19:40:47 字数 337 浏览 0 评论 0原文

设置:我有一个滚动视图,其中嵌套了标签、uiimage 和表格视图(分组)。 label、uiimage 和 tableveiw 由 Web 服务填充。分组表视图中的最后一部分包含的文本永远不会相同,并且可能长达 5 个字符到 250 个以上。此外,该视图是从基本表格视图推送的(因此它有一个导航栏。如果这很重要的话)。

预期:表格视图的高度应根据从网络服务接收的内容的长度而延伸。然后设置滚动视图高度以适应桌面视图的高度

问题:我不太确定如何解决这个问题。我真的只知道如何将高度更改为固定值,这在很多情况下都无法正常工作。

Setup: I have a scrollview with a label, uiimage, and a tableview (grouped) nested within. The label, uiimage, and tableveiw are populated by a webservice. The last section in the grouped table view contains text that will never be the same and could be as long as 5 characters to 250+. Also, this view is pushed from a basic tableview (so it has a navigation bar. If that matters at all).

Expected: The tableview should extend in height depending on the length of the content received from the web service. Then set the scrollview height to accommodate the height of the tableview

Problem: I'm not quite sure how to approach the issue. I really only know how to change the height to fixed values, which will not work properly in many scenarios.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

楠木可依 2024-11-07 19:40:47

单元格的宽度和高度被忽略;单元格单元格将根据您从 -tableView:heightForRowAtIndexPath: 或(失败)tableView.rowHeight 返回的值重新调整大小。如果单元格中的标签大小足够大,则可能看起来单元格足够大,因为标签允许大于单元格(并在单元格外部渲染)。

一种方法是重写 -tableView:heightForRowAtIndexPath: 以返回正确的高度。这实际上并不是 UITableView 的预期用途(它主要设计用于从内容列表动态生成的大量单一高度的行)。

另一种方法是设置 tableView.tableFooterView = myCustomFooter 。这可能是最简单的方法。在执行分配之前正确调整其大小(高度很重要;表格视图无论如何都会为您设置宽度)。还要确保未设置自动调整大小标志,否则当表视图更改大小时(例如自动旋转时),大小将出现随机更改。

The width and height of the cell are ignored; the cell cell is re-sized according to the value you return from -tableView:heightForRowAtIndexPath: or (failing that) tableView.rowHeight. It might appear as if the cell is big enough if the label in the cell is sized to be big enough, because the label is allowed to be bigger than (and render outside) the cell.

One way is to override -tableView:heightForRowAtIndexPath: to return the correct height. This isn't really the intended use of UITableView (it's primarily designed for lots of rows of a single height, dynamically generated from a list of content).

Another way is to set tableView.tableFooterView = myCustomFooter instead. This is probably the easiest way. Size it correctly before performing the assignment (the height matters; the table view will set the width for you anyway). Also make sure that the autoresizing flags are not set, or the size will appear to randomly change when the table view changes size (e.g. on autorotation).

谁与争疯 2024-11-07 19:40:47

我只关注可变高度元素,找出适合那里文本的高度。要计算渲染时字符串的高度,请使用如下代码片段:

CGFloat MY_TABLECELL_WIDTH = 320;
CGFloat MY_MAX_HEIGHT = 10000;
UIFont *MY_FONT = nil; // load the correct font here.
CGSize maxSize = CGSizeMake(MY_TABLECELL_WIDTH,MY_MAX_HEIGHT);
CGSize textSize = [serverString sizeWithFont:MY_FONT 
                        constrainedToSize:maxSize 
                        lineBreakMode:UILineBreakModeWordWrap]; 

I'd just focus on the variable height element, figure out the height that fits the text there. To figure out the height that a string will take when rendered use a snippet like this:

CGFloat MY_TABLECELL_WIDTH = 320;
CGFloat MY_MAX_HEIGHT = 10000;
UIFont *MY_FONT = nil; // load the correct font here.
CGSize maxSize = CGSizeMake(MY_TABLECELL_WIDTH,MY_MAX_HEIGHT);
CGSize textSize = [serverString sizeWithFont:MY_FONT 
                        constrainedToSize:maxSize 
                        lineBreakMode:UILineBreakModeWordWrap]; 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文