【问题标题】:Dynamic UIWebView height and UITableViewCell resizing动态 UIWebView 高度和 UITableViewCell 调整大小
【发布时间】:2016-05-17 13:29:21
【问题描述】:

首先,我尝试了许多来自 SO 和 google 的问题和答案,但没有一个答案或技巧仍然可以解决我的问题。而且我在调整表格视图大小时仍然遇到问题。所以,我想让每个人都知道,我在花了很多时间解决这个案子后确实发布了这个问题。因此,欢迎任何帮助,尤其是在 Swift 和 Storyboard 中。

这是我的设计

如您所见,我的tableview cell 是来自服务器的动态数据。所以,我做了可重复使用的表格视图单元格。但另一个问题是我在UITableViewCell 内部得到了视图,最糟糕的是,在UIView 内部,它的UIWebView

我仍然无法调整它的大小,因为UIViewUIWebView 的父级。我的UIWebView 高度将基于我从服务器获得的数据而动态变化,这只是一个 HTML 字符串。当它完成加载。我需要调整UIView 的大小以在UIView 调整大小后立即显示UIButton 我还需要设置UITableViewCell 高度。

有什么帮助吗?如果我成功了,那么这个答案将对所有寻求此类问题答案的人有所帮助。

【问题讨论】:

    标签: swift uitableview uiview resizable


    【解决方案1】:

    你可以尝试一件事:

    • 首先将 UIView 上的约束设置为 contentView(UITableViewCell)的边缘,以及内部元素的约束(相对于 UIView)。
    • 其次,根据您从 Web 服务收到的数据,使用方法 tableView:heightForRowAtIndexPath:(在 UITableViewDelegate 中)返回您想要的大小。

    【讨论】:

    • 那只能根据 UIView 调整 UITableViewCell 的大小,而不是 UIWebView。;(
    • 不,相反,会根据 UITableViewCell 设置 UIView,根据 UIView 设置 UIWebView。给我几分钟,我做个小例子。
    • 我试过你的例子。但是,我不想启用 UIWebView 滚动功能。意味着我将禁用 UIWebView 上的用户交互。我不会使用 uiwebview 中的 url 加载网站。我会只需在每个 uitableviewcell 上加载来自服务器的 html 标签。所以,我需要在 webview 中加载 html 页面的全高。
    • 同样,您唯一需要做的就是在 StoryBoard 上禁用 ScrollView 并建立一种方法来获取您要加载的 HTML 的高度(这取决于您的需要)。或者您可以使用 UIScrollView,动态创建 UIWebView 并获取 webView.scrollView.contentSize(并动态更新约束)。与第一种不同,我是先加载页面,再设置Height。