美文网首页
UIScrollView的应用以及注意事项

UIScrollView的应用以及注意事项

作者: 成语笔记 | 来源:发表于2016-08-09 21:48 被阅读89次

    1、在scrollview中以及tableview中,判断scrollview的滑动方向:

    - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{

    CGPoint translation = [scrollView.panGestureRecognizer translationInView:scrollView.superview];

    if (translation.y>0) {

    self.hiddenHeadView=NO;

    }else if(translation.y<0){

    self.hiddenHeadView=YES;

    }

    }

    2、navigationbar以及tabbar的对UIScrollview以及UITableView的影响:

    当整个UIViewController中的第一个View是UIScrollView或者是其子视图的时候,系统会自动根据当前页面中是否存在navigationbar或者是tabbar设置UIScrollView或者是其子视图的contentInset,目的就是为了让其contentView中的内容全部能展示出来,让用户全部能看到(注意:这只有在UIScrollView或者是其子视图是当前UIViewController中的第一个View的时候才可以)。在开发过程中,当需求需要在某一时刻突然隐藏掉navigationbar或者是tabbar时候,此时的contentInset还是初始值,这就导致了UIScrollView的contentView在视觉上会有向上或者是向下的偏移(隐藏navigationbar会有向下64偏移量,隐藏tabbar会有向上49的偏移量     注意:这种现象只在IOS8 - IOS10中有,在IOS11中不存在),解决这种问题方方法就是:

    方法一:UIVIewController中的第一个View不能是UIScrollView或者是其子视图,在最上方添加一下代码

    [self.view addSubview:[[UIView alloc] init]];

    方法二:设置UIScrollView 的contentInset 

    self.tableView.contentInset = UIEdgeInsetsMake(0, 0, 0, 0);这种方法治标不治本,只是看起来有效果,但是当你push到另一个页面中在pop回来又会出现该问题

    以上两种方法都是解决(ios8 - ios10)中的问题,在ios11中没有这种问题,iOS11中好像能自动调整contentInset,怎么隐藏navigationbar和tabbar都没影响

    相关文章

      网友评论

          本文标题:UIScrollView的应用以及注意事项

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