美文网首页
UIScrollView旋转时函数调用次序

UIScrollView旋转时函数调用次序

作者: EDSIOON | 来源:发表于2014-05-24 12:54 被阅读0次

近期项目中需实现分页的ScrollView旋转功能,但是遇到一个相当奇怪的问题:当scrollView处于最后一页时,旋转后的contentOffset值会异常,即旋转后scrollView可能不在最后一页。通过查找StackOverFlow和试验,最终发现:当scrollView处于最后一页时,旋转时调用的函数是不同的。

正常情况下(非最后一页),函数调用顺序如下:

  1. willRotateToInterfaceOrientation:duration:
  2. willAnimateRotationToInterfaceOrientation: duration:
  3. didRotateFromInterfaceOrientation:

最后一页时,函数调用顺序如下:

  1. willRotateToInterfaceOrientation: duration:
  2. scrollViewDidScroll:
  3. willAnimateRotationToInterfaceOrientation: duration:
  4. didRotateFromInterfaceOrientation:

UIScrollView在旋转时,会通过UIViewAutosizingMask的规范自动调整bounds的大小,这个bounds的变化在willAnimateRotationToInterfaceOrientation: duration:可以捕捉到,但是当UIScrollView处于最后一页时,系统在我们捕捉到scrollView尺寸变化之前调用了scrollViewDidScroll函数,恰巧我们经常性的在此函数中做翻页处理,从而导致了页面显示的不准确。

解决办法:在willRotateToInterfaceOrientation: duration:中强制将UIScrollView的scrollEnabled属性置为NO,然后在didRotateFromInterfaceOrientation:再次将scrollEnabled属性置为YES。

相关文章

  • UIScrollView旋转时函数调用次序

    近期项目中需实现分页的ScrollView旋转功能,但是遇到一个相当奇怪的问题:当scrollView处于最后一页...

  • layoutSubViews何时调用

    layoutSubViews何时调用 初始化init方法时不会调用 滚动UIScrollView调用 旋转屏幕调用...

  • JavaScript - this与函数的四种调用方式

    在 ES6 之前,函数内部 this 的指向是由该函数的调用方式来决定的 函数调用方式 使用函数调用方式调用函数时...

  • 凌阳分享无参数无返回值的函数

    【凌阳教育资讯】当函数没有参数时,不用从调用函数接收任何数据。同样,当函数没有返回值时,调用函数不会从被调用函数中...

  • 对万象解死锁理解

    死锁的的情况是与欧拉旋转的计算次序有关的。如YXZ次序时,只要绕X轴的旋转为90度,不管绕Y,Z旋转多少,都是死锁...

  • python函数进阶

    函数 主程序调用函数时,必须保证这个函数此前已经定义过,即被调函数的实现要在调用函数之前: 但在函数内部调用其他函...

  • 14.Python编程:递归函数

    定义一个函数时,是可以调用其他函数的。特殊地,当函数内部调用自己时,就是递归现象。说白了,就是函数自己调用自己。在...

  • 【Python】返回函数/匿名函数/装饰器/偏函数

    返回函数 函数作为返回值。 调用A时,返回函数a,调用a时,返回值 闭包在函数里又定义了新函数,内部函数可以引用外...

  • c++入门 - 内联函数、#pragma once

    内联函数 函数的调用 执行到函数调用指令时,程序将在函数在调用后立即存储该指令的内存地址,并将函数参数复制到堆栈(...

  • 2019-07-20 JS函数调用 弹出

    1.函数调用 函数中的代码将在其他代码调用该函数时执行: 当事件发生时(当用户点击按钮时) 当 JavaScrip...

网友评论

      本文标题:UIScrollView旋转时函数调用次序

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