UIScrollView滑动的问题,纠结很久了.

szj424607870 2014-09-22 09:11:48
效果就是仿雅虎天气和云墨天气那样的.
保存天气的视图一开始在底下.
效果1. 缓慢向上拉动的时候,如果拉动大于一定距离,松开手后就会自动滑动到顶部,
效果2. 如果稍微快一点向上拉动,(scrollView的代理方法会判断将要减速),不管滑动距离多远,都会很平缓的(看起来很自然)滑动到顶部

从顶部向下滑动效果是一样的.


效果1很容易就实现了,只要判断内容的偏移值大于一定值就可以了
效果2我原来的思路是:在scrollView的代理方法里判断是否会减速,会的话就用uiview的动画方法来让它滑动到顶部,但是实际效果是你松开手后它会卡顿一下,然后才会动画的滑动到顶部,很不自然.
有哪位高手做过这样的案例,谢谢指教,折腾我好几天了.网上也没有找到相关的教程和案例.
...全文
775 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Bannings 2014-09-23
  • 打赏
  • 举报
回复
你不用计算了,targetContentOffset已经帮你计算好了,你只用在其基础上进行一些修改,然后把targetContentOffset返回就行了
szj424607870 2014-09-23
  • 打赏
  • 举报
回复
引用 1 楼 zhangao0086 的回复:
UIScrollView的delegate回调中,有考虑到惯性减速的情况: scrollViewWillEndDragging:withVelocity:targetContentOffset
谢谢你的回复! 这个方法里的Velocity参数我不会用, 因为滑动到某一点我用的是uiview的animateWithDuration: animations:方法 我不知道怎么通过某一点坐标和Velocity参数来计算Duration参数(动画时间) 有没有其他根据速率来播放动画的方法?
szj424607870 2014-09-23
  • 打赏
  • 举报
回复
引用 5 楼 zhangao0086 的回复:
[quote=引用 4 楼 szj424607870 的回复:] [quote=引用 3 楼 zhangao0086 的回复:] 你不用计算了,targetContentOffset已经帮你计算好了,你只用在其基础上进行一些修改,然后把targetContentOffset返回就行了
targetContentOffset是减速滑动的后的坐标点,用什么方法返回呢? 现在是这样的,在scrollViewWillEndDragging:withVelocity:targetContentOffset方法里 if Velocity.y > 0 说明会减速 然后我就想让它很自然的一直减速到顶部,该怎么做[/quote] 抱歉,我之前说错了,直接修改targetContentOffset(它是inout属性)就可以了,不需要返回,我忘了了那个接口是没有返回值的。 targetContentOffset = CGPointZero[/quote] 太感谢你了,已经解决,改targetContentOffset->y = 就好了
Bannings 2014-09-23
  • 打赏
  • 举报
回复
引用 4 楼 szj424607870 的回复:
[quote=引用 3 楼 zhangao0086 的回复:] 你不用计算了,targetContentOffset已经帮你计算好了,你只用在其基础上进行一些修改,然后把targetContentOffset返回就行了
targetContentOffset是减速滑动的后的坐标点,用什么方法返回呢? 现在是这样的,在scrollViewWillEndDragging:withVelocity:targetContentOffset方法里 if Velocity.y > 0 说明会减速 然后我就想让它很自然的一直减速到顶部,该怎么做[/quote] 抱歉,我之前说错了,直接修改targetContentOffset(它是inout属性)就可以了,不需要返回,我忘了了那个接口是没有返回值的。 targetContentOffset = CGPointZero
szj424607870 2014-09-23
  • 打赏
  • 举报
回复
引用 3 楼 zhangao0086 的回复:
你不用计算了,targetContentOffset已经帮你计算好了,你只用在其基础上进行一些修改,然后把targetContentOffset返回就行了
targetContentOffset是减速滑动的后的坐标点,用什么方法返回呢? 现在是这样的,在scrollViewWillEndDragging:withVelocity:targetContentOffset方法里 if Velocity.y > 0 说明会减速 然后我就想让它很自然的一直减速到顶部,该怎么做
Bannings 2014-09-22
  • 打赏
  • 举报
回复
UIScrollView的delegate回调中,有考虑到惯性减速的情况: scrollViewWillEndDragging:withVelocity:targetContentOffset

29,027

社区成员

发帖
与我相关
我的任务
社区描述
主要讨论与iOS相关的软件和技术
社区管理员
  • iOS
  • 大熊猫侯佩
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧