zoukankan      html  css  js  c++  java
  • UIScrollView分页的实现

    UIScrollView分页的实现

     UIScrollView的经典例子就是safari的编辑模式了
      UIScrollView可以垂直,水平滚动。
      如果属性pageEnabled = YES,则设置其为分页模式,那么没滚动一次就是一页,垂直方向上的一页就是UIScrollView的高度,水平方向就是其宽度。
      我们可以设置contentSize,这就是UIScrollView可以滚动的最大区域了。
      UIScrollView没有datasource的概念,因为这就是一个view,具体view中的内容摆放完全随意,只是每次都会滚动固定的页面大小。
      比如我们有5个页面,我们需要自己计算每个页面的位置,将其水平放在UIScrollView上。
      contentSize则设置为5*每个页面的宽度,每个页面的高度。
      如果contentSize的高度或这宽度正好与UIScrollView的高度或宽度相等,则在该方向上不能滚动。
      具体例子可以查看官方文档的例子,PageControl。
      注意:UIScrollView不会带有分页的指示符号,需要利用UIPageControl控制。
      但是要想做到safari的效果,我们需要一个小技巧,因为在safari中,当前页时可以看到前后两页的部分内容。
       注意:分页的宽度不能修改,所以我们只能缩小UIScrollView的宽度,让其不要占满整个屏幕,同时设置clipsToBouds属性为NO,这 样超出范围的视图也会显示,这样就能看到前后两页的内容,当然需要设置前后两页的alpha值为0.5,做出一个透明效果。
      在UIScrollView的滚动事件中,判断位置,当一个页面出现的区域超过1半时,设置alpha为1,小于1半时设置alpha为0.5
       现在还有一个问题:UIScrollView的滑动事件响应区域变小了,因为UIScrollView本身变小了,其余我们看到的页面在区域之外,因此 我们需要重写UIScrollView所在的parentView的hittest事件,在其他区域的事件返回值为UIScrollView对象,这样用 户感觉整个屏幕都是UIScrollView在响应了。

  • 相关阅读:
    2018-2-13-安装-aria2
    ..USERstm32f10x.h(428): error: #67: expected a "}" ADC1_2_IRQn = 18, /*!
    zubax_gnss移植到STM32F407
    ChibiOS/RT移植到STM32F407
    arm-none-eabi/bin/ld: build/com.zubax.gnss.elf section `.text' will not fit in region `flash'
    Traceback (most recent call last): File "../zubax_chibios/tools/make_boot_descriptor.py", line 251
    Eclipse 交叉编译环境
    PX4/Pixhawk uORB
    FreeRTOS 任务创建和删除(静态)
    FreeRTOS 任务创建和删除(动态)
  • 原文地址:https://www.cnblogs.com/chenfulai/p/2086222.html
Copyright © 2011-2022 走看看