iOS 目前这种视图构造结构的 都是如何实现的呢? ScrollView 的嵌套? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
qq432591
V2EX    iOS

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

  •  
  •   qq432591 2017-08-25 10:33:43 +08:00 4576 次点击
    这是一个创建于 2982 天前的主题,其中的信息可能已经有所发展或是发生改变。
    ![]( )

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

    ![]( )
    这种主页的搭建 大多也是这种类似结构,那么底部的 main_ScrollView 如何将他作为一个容器来处理呢?
    20 条回复    2017-08-25 17:09:32 +08:00
    0nlyy0u
        1
    0nlyy0u  
       2017-08-25 10:40:20 +08:00
    这是怎么做到的。越狱了?
    qq432591
        2
    qq432591  
    OP
       2017-08-25 10:41:29 +08:00
    恩,是的!
    zylll520
        3
    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
        4
    qq432591  
    OP
       2017-08-25 10:44:57 +08:00
    @zylll520 webView 的 height 可以设置为其 contentSize.height 高度,切不滚动,但是下边的 tableview 的你如果不让他滚动的话 不断的改变其高度 那复用怎么办??????
    zylll520
        5
    zylll520  
       2017-08-25 10:49:06 +08:00
    @qq432591 不管是 webView 还是 tableView,高度最多也就是 main_ScrollView.freme.size.height,不能是 contentSize.height,原因你可以想想
    qq432591
        6
    qq432591  
    OP
       2017-08-25 10:56:02 +08:00
    @zylll520 但是我通过 reveal 里面看到 他们的 Frame 是没有变化的。
    qq432591
        7
    qq432591  
    OP
       2017-08-25 11:00:41 +08:00
    @zylll520 恩 ,刚有仔细观察 的确如你所说,那思路有了我去尝试下将其复现出来
    qq432591
        8
    qq432591  
    OP
       2017-08-25 11:04:35 +08:00
    @zylll520 感觉 在 scrollDidScroll 里面改不太准确吧 KVO 监听 main_ScrollView 的 offset.y ?
    renshaojuncool
        9
    renshaojuncool  
       2017-08-25 11:07:14 +08:00
    webview 是 tableview 的 header,通过 js 拿到 webview 渲染完成后的高度就可以了吧,我以前是这么写的,没什么问题
    shore507
        10
    shore507  
       2017-08-25 11:12:00 +08:00 via iPhone
    @renshaojuncool 我也这么干过
    zylll520
        11
    zylll520  
       2017-08-25 11:23:47 +08:00
    @renshaojuncool 从 webView 的渲染原理上说,你这种方法在网页内容高度很高 /图片很多的时候应该会有奔溃的可能吧
    qq432591
        12
    qq432591  
    OP
       2017-08-25 14:58:40 +08:00
    @zylll520 这个在 scrollDidScroll 里面 直接设置 subScrollView 的 setContentOffset 动画 会一卡一卡的 这该如何处理 ? KVO 监听的话 也是同样的问题!
    zjmdp
        13
    zjmdp  
       2017-08-25 15:09:06 +08:00
    最外层一个 UITableView,section 1 就一个 cell,cell 里放一个 UIWebView,高度即 webView.contentSize.height (需要监听 webView 的 contentSize 的变化),section 2 就加载评论内容
    qq432591
        14
    qq432591  
    OP
       2017-08-25 15:11:48 +08:00
    @zjmdp 但是 你没有发现现在很多 APP 主页 都可能是一个比较复杂的结构么? 总不能说明东西都用 tableView 来搞吧,现在的问题就是如何将一个 ScrollView 当做一个容器来处理 ,里面可以添加任何控件。这样会好点吧,但问题主要就是在于如何处理滑动问题
    zjmdp
        15
    zjmdp  
       2017-08-25 15:12:21 +08:00
    当然我提到的这种做法和截图不太一致,但是感觉也可行
    zjmdp
        16
    zjmdp  
       2017-08-25 15:13:59 +08:00
    @qq432591 为什么不行呢?多几个 section 不就行了,感觉逻辑上更清楚啊,甚至还有 tableHeaderView 可以用呢,特别是顶部放一些 banner 和分类用 tableHeaderView 再合适不过了
    qq432591
        17
    qq432591  
    OP
       2017-08-25 15:16:16 +08:00
    @zjmdp 就是想知道他们是如何做到的, 因为苹果文档也是 不建议 去 scrollView 嵌套 scrollView 这种操作,但是人家可以做到这样来搞 肯定是有一定理由的, 而且感觉他们这样搞起来的话 代码层面也会逻辑清晰一点吧。毕竟视图都分成不同的视图了,管理起来应该会比用一个 tableView 好点!
    zylll520
        18
    zylll520  
       2017-08-25 15:20:50 +08:00
    @qq432591 animated: NO
    qq432591
        19
    qq432591  
    OP
       2017-08-25 15:34:06 +08:00
    @zylll520 不行 已经试过了
    zylll520
        20
    zylll520  
       2017-08-25 17:09:32 +08:00
    @qq432591 setFrame + setContentOffset:animated:NO 是可以的
    关于     帮助文档 &nsp;   自助推广系统     博客     API     FAQ     Solana     1404 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 22ms UTC 16:54 PVG 00:54 LAX 09:54 JFK 12:54
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86