UIScrollView的应用以及注意事项

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都没影响

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • { 11、核心动画 需要签协议,但是系统帮签好 一、CABasicAnimation 1、创建基础动画对象 CAB...
    CYC666阅读 1,589评论 2 4
  • 废话不多说,直接上干货 ---------------------------------------------...
    小小赵纸农阅读 3,436评论 0 15
  • *7月8日上午 N:Block :跟一个函数块差不多,会对里面所有的内容的引用计数+1,想要解决就用__block...
    炙冰阅读 2,542评论 1 14
  • 每天,新我脱胎于旧我,杀死昨日的旧我,才能重生新我。所谓旧我,就是旧的价值观,旧的印迹,旧的不合时宜的想法,唯有新...
    雪中凝阅读 262评论 0 0
  • 今天看到一则新闻,说独自在外地打拼的IT男,只身一人,捂着胸口去医院,脸色苍白,额头的碎发被密密麻麻的汗珠濡湿了。...
    芸小逗阅读 391评论 0 0