应用程序界面上的图片和Html内容,结合滚动

时间:2016-01-07 18:56:16

标签: ios swift uiscrollview uiwebview uiwebviewdelegate

问题

我想在应用程序屏幕上显示图像和Html文本。文本很大,因此它可能不适合屏幕,所以我希望内容可滚动。默认情况下,WebView具有超出屏幕大小的内容的滚动功能。但是,当我向下滚动时,我不希望文本向上移动,而是向上移动图像,即当我向下滚动时,我不希望图像在屏幕上停留。

一个简单的解决方案是在html内容中呈现图像,但我不想这样做,因为ImageView允许我使用其他功能。

可能的解决方案

我为此尝试的解决方案是在ImageView内有WebViewScrollView但是当我尝试实现它时,只有webview内容滚动并且图像是固定的。 (这可能是因为WebView的滚动正在优先于父ScrollView的滚动。我甚至尝试将WebView的子滚动视图的委托设置为外滚动视图,但这没有帮助和html构建后,文本根本无法滚动:

webview.scrollView.delegate = self.scrollView

如何使用其他容器视图(如果需要)解决ImageViewWebView中内容的组合滚动问题?

2 个答案:

答案 0 :(得分:1)

听起来您可以使用UITableView UIImageView作为tableViewHeaderUIWebView组件可以是UITableViewCelltableFooterView,具体取决于您希望如何构建视图。

  1. UIImageView设为UITableView的{​​{1}}。这样,当表格滚动时,您的图像将滚动屏幕。

  2. 创建包含tableHeaderView的{​​{1}}。您可以将单元格的高度设置为您的内容大小或屏幕大小。 webview本身将在此单元格中滚动,用户也可以向上滚动以查看图像标题。

答案 1 :(得分:0)

您可以尝试以下方法:

禁用滚动浏览webview。将图像放在webview上。

func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    try container.encode(id, forKey: .id)
    try container.encode(suiteID, forKey: .suiteID)
    try container.encode(parentID, forKey: .parentID)
    try container.encode(depth, forKey: .depth)
    try container.encode(displayOrder, forKey: .displayOrder)
    try container.encode(name, forKey: .name)
    try container.encode(description, forKey: .description)
}

您需要做的主要事情是禁用滚动浏览webview并启用滚动滚动视图。将图像和webview内容放在scrollview的子视图中。

您可以在webview didFinish委托方法中更改滚动视图的高度。获得webView加载内容的高度后,相应地更改滚动视图的“内容大小”。