iOS之UISCrollView--原理

 

UIScrollView的工作原理,当手指touch的时候,UIScrollView会拦截Event,会等待一段时间,在这段时间内,如果没有手指没有移动,当时间结束时,UIScrollView会发送tracking events到子视图上。在时间结束前,手指发生了移动,那么UIScrollView就会进行移动,从而取笑发送tracking。

 

那么,UIScrollView的子类想要接受touch事件,就是用户点击UIScrollView上的视图时,要先处理视图上的touch,而不发生滚动。这时候就需要UIScrollView的子类重载touchesShouldBegin:withEvent:inContentView: ,从而决定自己是否接受子视图中的touch事件。

注意:scrollView的子控件不能依据scrollView的边距来动态设置高度和宽度,这样的话scrollView不能根据内部子控件来计算contentSize了。所以scrollView的子控件需要自己有明确宽高,这个是一种解决办法;还有的解决办法是在scrollView上面加一个view,所有的控件都相对于View布局;大多数情况下,我觉的如果scrollView加在父View上的话,那么它的子视图可以根据父View来写约束进行布局,这样还是比较省事的,而且scrollView能根据子视图的大小来计算contentSize,不影响滑动。

1.==============UISCrollView 在自动布局中的使用注意

   //autolayout下,会在viewDidAppear之前根据subviewconstraint重新计算scrollviewcontentsize这就是为什么,在viewdidload里面手动设置了contentsize没用。因为在后面,会再重新计算一次,前面手动设置的值会被覆盖掉。

//    解决办法就是:

//    1.去除autolayout选项,自己手动设置contentsize

//    2.如果要使用autolayout,要么自己设置完subviewconstraint,然后让系统自动根据constraint计算出contentsize要么就在viewDidAppear里面自己手动设置contentsize

    self.baseScrollView.contentSize=CGSizeMake(0,self.view.frame.size.height*2-300);//basescrollView的滚动范围


2.UISCrolview内部的控件布局的时候不能相对于UIScrollview布局;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值