我想在应用程序屏幕上显示图像和Html文本。文本很大,因此它可能不适合屏幕,所以我希望内容可滚动。默认情况下,WebView
具有超出屏幕大小的内容的滚动功能。但是,当我向下滚动时,我不希望文本向上移动,而是向上移动图像,即当我向下滚动时,我不希望图像在屏幕上停留。
一个简单的解决方案是在html内容中呈现图像,但我不想这样做,因为ImageView允许我使用其他功能。
我为此尝试的解决方案是在ImageView
内有WebView
和ScrollView
但是当我尝试实现它时,只有webview内容滚动并且图像是固定的。 (这可能是因为WebView
的滚动正在优先于父ScrollView
的滚动。我甚至尝试将WebView的子滚动视图的委托设置为外滚动视图,但这没有帮助和html构建后,文本根本无法滚动:
webview.scrollView.delegate = self.scrollView
如何使用其他容器视图(如果需要)解决ImageView
和WebView
中内容的组合滚动问题?
答案 0 :(得分:1)
听起来您可以使用UITableView
UIImageView
作为tableViewHeader
。 UIWebView
组件可以是UITableViewCell
或tableFooterView
,具体取决于您希望如何构建视图。
将UIImageView
设为UITableView
的{{1}}。这样,当表格滚动时,您的图像将滚动屏幕。
创建包含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加载内容的高度后,相应地更改滚动视图的“内容大小”。