博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS之UISCrollView--原理
阅读量:4288 次
发布时间:2019-05-27

本文共 1118 字,大约阅读时间需要 3 分钟。

 

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布局;

转载地址:http://pfmgi.baihongyu.com/

你可能感兴趣的文章
c++ 加载so动态库中的资源
查看>>
加解密 签名
查看>>
linux top 命令分析
查看>>
Linux vmstat命令详解
查看>>
linux pmap命令
查看>>
MySQL数据同步【双主热备】
查看>>
Mysql主从复制实践手册
查看>>
nginx配置正向代理支持HTTPS
查看>>
Perf -- Linux下的系统性能调优神器
查看>>
C++ 用libcurl库进行http通讯网络编程
查看>>
秒杀多线程第十篇 生产者消费者问题
查看>>
信号量与互斥锁
查看>>
linux 查看CPU个数,核数
查看>>
string 序列化
查看>>
va_start(),va_end()函数应用
查看>>
crontab命令
查看>>
State Threads——异步回调的线性实现
查看>>
va_start va_end
查看>>
共享内存,共享缓冲区 一对多
查看>>
无锁队列的实现
查看>>