无法弄清楚如何在同一 ScrollView 中的 WebView 上方添加自定义视图
Posted
技术标签:
【中文标题】无法弄清楚如何在同一 ScrollView 中的 WebView 上方添加自定义视图【英文标题】:Trouble figuring out how to add a custom view above WebView within the same ScrollView 【发布时间】:2012-06-06 19:19:54 【问题描述】:我正在尝试创建一个界面类似于 iPhone 上的邮件应用程序的应用程序。当您在内置邮件应用程序上查看电子邮件时,它会在邮件之前的区域中显示发件人/收件人信息以及主题。我正在考虑将 WebView 用于消息部分,但我想不出一种方法让一些自定义视图出现在 WebView 上方,同时仍在同一个 ScrollView 中。
实现这一点的最佳方法是什么?对我来说,最好的选择似乎是在 html/CSS 的顶部生成“自定义视图”,然后简单地附加消息的 HTML。我曾考虑尝试将带有另一个视图的 WebView 放在 ScrollView 中,但这似乎违反了 Apple 的设计准则。
任何想法或建议都会很棒。
谢谢,
托马斯
【问题讨论】:
我有点困惑。你是说你想要一个滚动视图中有两个子视图? 是的,最好在顶部有一些自定义视图,在其下方有一个 Web 视图。但是,我希望自定义视图与 Web 视图一起滚动;我不希望能够滚动浏览 Web 视图,同时仍然能够在顶部看到自定义视图。 我想说只是不要使用 webView 并将 scrollView contentSize 设置为所述视图的宽度,然后将高度设置为 customView 和 messageView 的高度之和。 【参考方案1】:我认为这不违反 Apple 准则。
在你的情况下我会做以下事情。
首先创建滚动视图
在其中放置您的固定高度标题(带有主题等...)
然后在滚动视图中放置一个 webView ,其 y 偏移量是您的标题高度。
webView 加载完成后调用[webView sizeToFit];
(调整视图大小,尽量不裁剪子视图)
也许您必须再次设置 y 偏移量 (frame.origin.y=offset
)
然后将scrollview内容大小设置为两个高度之和:
scrollView.contentSize=CGSizeMake(width, headerView.frame.size.height + webview.frame.size.height);
我对@987654324@ 将要做什么并不是很有信心。我读过你也可以使用 [webView sizeThatFits:CGSizeZero];
。它显然会返回 webView 所需的大小。
您只需将 webviews 帧大小更改为该函数的返回值,并使用与以前相同的 contentsize 语句。
希望这有帮助
PS:我认为使用 html 代替视图是个坏主意。它要慢得多,并且需要初始时间才能加载。我发现它的唯一用途是显示格式化文本。
【讨论】:
以上是关于无法弄清楚如何在同一 ScrollView 中的 WebView 上方添加自定义视图的主要内容,如果未能解决你的问题,请参考以下文章
与 Geometry Reader 结合使用时,ScrollView 无法正确滚动(反弹)