iOS 目前这种视图构造结构的 都是如何实现的呢? ScrollView 的嵌套?

2017-08-25 10:33:43 +08:00
 qq432591
![]( )

类似于今日头条的文章详情页。底部一个 main_ScrollView 里面嵌套有 webView+TableView 视图,在同方向上 如何处理滚动的情况呢?有了解的么????

![]( )
这种主页的搭建 大多也是这种类似结构,那么底部的 main_ScrollView 如何将他作为一个容器来处理呢?
4153 次点击
所在节点    iOS
20 条回复
0nlyy0u
2017-08-25 10:40:20 +08:00
这是怎么做到的。越狱了?
qq432591
2017-08-25 10:41:29 +08:00
恩,是的!
zylll520
2017-08-25 10:42:40 +08:00
很简单吧
main_ScrollView:scrollEnable = YES; contentSize.height = webView.contentSize.height +TableView.contentSize.height

webView.scrollEnable = NO;
TableView.scrollEnable = NO;

然后在 scrollDidScroll 的代理方法里面不断更改 webView/TableView 的 frame.y 和 contentOffset.y 就可以了
qq432591
2017-08-25 10:44:57 +08:00
@zylll520 webView 的 height 可以设置为其 contentSize.height 高度,切不滚动,但是下边的 tableview 的你如果不让他滚动的话 不断的改变其高度 那复用怎么办??????
zylll520
2017-08-25 10:49:06 +08:00
@qq432591 不管是 webView 还是 tableView,高度最多也就是 main_ScrollView.freme.size.height,不能是 contentSize.height,原因你可以想想
qq432591
2017-08-25 10:56:02 +08:00
@zylll520 但是我通过 reveal 里面看到 他们的 Frame 是没有变化的。
qq432591
2017-08-25 11:00:41 +08:00
@zylll520 恩 ,刚有仔细观察 的确如你所说,那思路有了我去尝试下将其复现出来
qq432591
2017-08-25 11:04:35 +08:00
@zylll520 感觉 在 scrollDidScroll 里面改不太准确吧 KVO 监听 main_ScrollView 的 offset.y ?
renshaojuncool
2017-08-25 11:07:14 +08:00
webview 是 tableview 的 header,通过 js 拿到 webview 渲染完成后的高度就可以了吧,我以前是这么写的,没什么问题
shore507
2017-08-25 11:12:00 +08:00
@renshaojuncool 我也这么干过
zylll520
2017-08-25 11:23:47 +08:00
@renshaojuncool 从 webView 的渲染原理上说,你这种方法在网页内容高度很高 /图片很多的时候应该会有奔溃的可能吧
qq432591
2017-08-25 14:58:40 +08:00
@zylll520 这个在 scrollDidScroll 里面 直接设置 subScrollView 的 setContentOffset 动画 会一卡一卡的 这该如何处理 ? KVO 监听的话 也是同样的问题!
zjmdp
2017-08-25 15:09:06 +08:00
最外层一个 UITableView,section 1 就一个 cell,cell 里放一个 UIWebView,高度即 webView.contentSize.height (需要监听 webView 的 contentSize 的变化),section 2 就加载评论内容
qq432591
2017-08-25 15:11:48 +08:00
@zjmdp 但是 你没有发现现在很多 APP 主页 都可能是一个比较复杂的结构么? 总不能说明东西都用 tableView 来搞吧,现在的问题就是如何将一个 ScrollView 当做一个容器来处理 ,里面可以添加任何控件。这样会好点吧,但问题主要就是在于如何处理滑动问题
zjmdp
2017-08-25 15:12:21 +08:00
当然我提到的这种做法和截图不太一致,但是感觉也可行
zjmdp
2017-08-25 15:13:59 +08:00
@qq432591 为什么不行呢?多几个 section 不就行了,感觉逻辑上更清楚啊,甚至还有 tableHeaderView 可以用呢,特别是顶部放一些 banner 和分类用 tableHeaderView 再合适不过了
qq432591
2017-08-25 15:16:16 +08:00
@zjmdp 就是想知道他们是如何做到的, 因为苹果文档也是 不建议 去 scrollView 嵌套 scrollView 这种操作,但是人家可以做到这样来搞 肯定是有一定理由的, 而且感觉他们这样搞起来的话 代码层面也会逻辑清晰一点吧。毕竟视图都分成不同的视图了,管理起来应该会比用一个 tableView 好点!
zylll520
2017-08-25 15:20:50 +08:00
@qq432591 animated: NO
qq432591
2017-08-25 15:34:06 +08:00
@zylll520 不行 已经试过了
zylll520
2017-08-25 17:09:32 +08:00
@qq432591 setFrame + setContentOffset:animated:NO 是可以的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/385653

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX