美文网首页
UIScrollview不滚动问题.md

UIScrollview不滚动问题.md

作者: 上玄月_lxl | 来源:发表于2020-11-10 10:10 被阅读0次

    问题描述
    写了一个scrollview,里面充满了视图且已经超出显示内容,但是就是不滚动。

    image.png

    问题解决点:

    • 1、设置属性 scrollEnabled = YES
    • 2、设置属性 alwaysBounceVertical = YES 如果是需要横向滚动 设置 alwaysBounceHorizontal 属性为YES;
    • 3、如果还没有滚动,请设置 属性 contentSize = CGSizeMake(0,你需要的纵向滚动范围);或者需要横向滚动的请 设置 属性 contentSize = CGSizeMake(你需要的横向滚动范围,0)
    • 4、masonry布局,可以添加一个edges属性试一下,代码如下
    // 这里centerScrollView 就是滚动视图,添加到的父视图是个view,即,self 对应一个view
    [self.centerScrollView mas_makeConstraints:^(MASConstraintMaker *make) {
            make.edges.equalTo(self);
            make.top.left.bottom.right.equalTo(0);
        }];
    
    • 5、尝试用frame进行布局试一下。如果frame 布局可以,再去仔细看下其他布局代码是不是哪里约束有问题。
    • 6、尝试将scrollview里的内容添加到一个view上面,并给view设置size大小,然后将view 添加到scrollview上试一下(这里尝试的原因是怀疑自己添加的内容并没有完全充满scrollview,如果充满且超过了就可以滚动了,即自动打开alwaysBounceVertical属性)。
      7、设置的masonry属性是否有冲突。比如下图代码。设置了view 的宽高,又设置了居左,居右equalTo(0),导致不能滚动。去掉居左就可以重新滚动了。


      WX20201116-184328@2x.png

    其他点拓展
    UITableView默认情况下alwaysBounceVertical是YES,alwaysBounceHorizontal是NO;

    UIScrollView和UICollectionView默认情况下alwaysBounceVertical和alwaysBounceHorizontal都是NO;只有当内容视图的尺寸超过了自己的bounds的尺寸的时候,相应方向上反弹属性才会自动设置为YES;

    因此,在编程中,实现滚动视图的下拉和上拉刷新的时候,就要相应的打开alwaysBounceVertical属性,才能实现下拉和上拉功能;例如UICollectionView页面只有一条数据的时候,内容视图没用占据到UICollectionView的整个bounds,当前就无法滚动,这个时候就要设置alwaysBounceVertical为YES,才能在垂直方向实现反弹进而实现上下拉刷新功能。


    感谢李书涛、刘涛两位大佬提供的解决思路与方案。

    相关文章

      网友评论

          本文标题:UIScrollview不滚动问题.md

          本文链接:https://www.haomeiwen.com/subject/znvdbktx.html