00『 基础知识 』iOS bug修复ios

项目需求---scrollview嵌套导致滚动卡顿问题

2016-08-15  本文已影响3989人  Big丶Show

更新

<p>谢谢各位朋友帮我想主意。此项目需求解决方案总结如下:</p>

  1. tableview或者collection view通用办法,设置两个组。第一个组没有item或者cell,只有SectionHeader
    (这里如果是collectionview并且iOS9以下想要达到tableviewSectionHeaderView那样的悬停效果需要自定义布局。如果是iOS9以上可以通过一下两个属性设置
    @property (nonatomic) BOOL sectionHeadersPinToVisibleBounds NS_AVAILABLE_IOS(9_0);
    @property (nonatomic) BOOL sectionFootersPinToVisibleBounds NS_AVAILABLE_IOS(9_0);
    )

2.如果是tableview,还可以同时设置headerView以及sectionHeaderView,因为sectionHeaderView在tableview是plain的方式下是悬停的,而headerView是不悬停的。

3.本文章所写的最土的方法

</br>


<p>最近在做一个项目,首页是这样设计的</p>


首页.jpg

<p></p>

<p>创建collectionview时设置scrollEnabled为No,在- (void)scrollViewDidScroll:(UIScrollView *)scrollView中根据contentOffset.y判断开启或关闭首页整体scrollviewcollectionviewscrollEnabled属性。</p>

    - (void)scrollViewDidScroll:(UIScrollView *)scrollView{
            if (scrollView != _scrollview){//滚动的是 collectionview
                if (scrollView.contentOffset.y <=0) {
                    _scrollView.scrollEnabled = NO;
                }
            }else{//滚动的主scrollview
                CGFloat bottomOffset = _scrollview.contentSize.height - _scrollview.bounds.size.height ;
                if ((int)scrollView.contentOffset.y > (int)(bottomOffset) + 45) {
                    [scrollView setContentOffset:CGPointMake(0, bottomOffset + 49) animated:NO];
                   _collectionview.scrollEnabled = YES;
                }else {
                    [_collectionview setContentOffset:CGPointZero animated:NO];
                    _collectionview.scrollEnabled = NO;
                }
            }
        }

<p>但是完全没有效果。之后也尝试了设置panGestureRecognizer.Enable属性,效果与scrollEnabled的设置是一样的,会出现卡顿。
google了一番,也没有找到合适的结局办法。只能动用一些土法子了。</p>
<p>因为赶项目并且能力有限,实在没办法深入研究。心里总想着更改panGestureRecognizer某些设置可以达到效果。如果有哪位大神已经做到,还请告知,小弟感激不尽。</p>



<p>问题虽然也解决了,但方法还有待优化。还是那句话,如有大神已经找到更好的解决方法,还请告知,小弟感激不尽。</p>

上一篇 下一篇

猜你喜欢

热点阅读