滚动视图(UIScrollView)

简单介绍

1、UIScrollView滚动视图能够排列并显示超出自身显示范围的内容。

2、UIScrollView内部整合了多种手势来达到丰富的界面展示效果。

3、UITableView、UITextView都继承于UIScrollView。

UIScrollView例子

1、上下滚动:如信息界面或者设置界面。

2、左右滚动:如音乐播放器里面的专辑信息展示。

UIScrollView实现机制

1、视图被加入到父视图上进行显示。超出父视图边界的部分将被隐藏。

2、子视图在滚动视图中的实际位置满足公式:

CompositedPosition.x = View.frame.origin.x - Superview.bounds.origin.x;

CompositedPosition.y = View.frame.origin.y - Superview.bounds.origin.y;

UIScrollView初始化及使用

初始化

- (id)initWithFrame:(CGRect)frame;

经常使用属性

  • contentOffset:设置当前可见内容偏移位置

  • contentSize:设置当前内容空间大小

  • contentInset:设置内容空间偏移量

  • pagingEnabled:设置是否进行分页

  • scrollEnabled:设置能否够滚动

  • showsHorizontalScrollIndicator:设置是否显示横向位置指示器

  • showsVerticalScrollIndicator:设置是否现实纵向位置指示器

  • delegate:设置代理

  • directionalLockEnabled:设置是否锁定朝向

  • bounces:设置是否回弹

  • indicatorStyle:设置朝向指示器样式

  • minimumZoomScale:设置最小缩放

  • maximumZoomScale:设置最大缩放

ContentOffset(偏移量)、ContentSize(文本内容)示意图

UIScrollViewDelegate

1、通过实现UIScrollViewDelegate协议方法能够对UIScrollView内部大量事件进行监听。在方法内部运行自己定义操作

// 滚动中
- (void)scrollViewDidScroll:(UIScrollView *)scrollView; // 開始拖动
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView; // 结束拖动
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate; // 停止滚动
- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView; // 開始减速
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView; // 停止减速
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView; // 滚动视图是否同意点击状态栏自己主动返回至顶部
- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView; // 滚动视图点击状态栏自己主动返回至顶部
- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView;

UIScrollVieweasy被忽略的小技巧

scrollsToTop属性

1、相信细心的开发人员都会发现scrollView自带一个功能,当用户点击顶部的状态栏时,scrollView的ContentOffset.y轴会自己主动滚动到初始位置返回顶部,通过scrollsToTop属性可进行配置,默认YES。

解决点击状态栏时ScrollView自己主动滚动到初始位置失效办法

1、返回功能对用户来说非常有用,尤其是在scrollView(TableView、WebView、CollectionView一切继承scrollView的控件)展示的内容非常多,当用户翻看非常久以后。想回到最顶部时,仅仅需单击一下顶部的状态栏位置就能够轻松返回到顶部(这里吐槽下,貌似非常多用户都不知道有这个功能)。而不用使劲用手滑动到顶部,但是功能在当前控制器有多个scrollView(TableView, WebView, CollectionView一切继承scrollView的控件)的时候就会失效。解决的方法就是将不须要的滚动视图的scrollsToTop属性置为NO就可以,仅仅保留最底层的滚动视图scrollsToTop属性为YES。

分页控件(UIPageControl)

1、UIPageControl称为分页控件,通常和UIScrollView配合使用,用于指示页面总数及当前页指示

UIPageControl例子

UIPageControl初始化方法

- (id)initWithFrame:(CGRect)frame;

UIPageControl经常使用属性

  • numberOfPages:设置显示总页数

  • currentPage:设置当前页数显示

  • pageIndicatorTintColor:设置总页数指示色

  • currentPageIndicatorTintColor:设置当前页指示色

  • hidesForSinglePage:设置当仅仅有一个界面的时候是否因此指示器,默觉得NO

OCUI界面设计:滚动视图与分页控件初探的更多相关文章

  1. 【NET】Winform分页控件初探

    public partial class WinFormPager : UserControl { ; /// <summary> /// 当前页 /// </summary> ...

  2. 基于WPF系统框架设计(10)-分页控件设计

    背景 最近要求项目组成员开发一个通用的分页组件,要求是这个组件简单易用,通用性,兼容现有框架MVVM模式,可是最后给我提交的成果勉强能够用,却欠少灵活性和框架兼容性. 设计的基本思想 传入数据源,总页 ...

  3. 在DevExpress程序中使用Winform分页控件直接录入数据并保存

    一般情况下,我们都倾向于使用一个组织比较好的独立界面来录入或者展示相关的数据,这样处理比较规范,也方便显示比较复杂的数据.不过在一些情况下,我们也可能需要直接在GridView表格上直接录入或者修改数 ...

  4. 基于存储过程的MVC开源分页控件--LYB.NET.SPPager

    摘要 现在基于ASP.NET MVC的分页控件我想大家都不陌生了,百度一下一大箩筐.其中有不少精品,陕北吴旗娃杨涛大哥做的分页控件MVCPager(http://www.webdiyer.com/)算 ...

  5. 基于存储过程的MVC开源分页控件

    基于存储过程的MVC开源分页控件--LYB.NET.SPPager 摘要 现在基于ASP.NET MVC的分页控件我想大家都不陌生了,百度一下一大箩筐.其中有不少精品,陕北吴旗娃杨涛大哥做的分页控件M ...

  6. 分页控件AspNetPager学习笔记

    1.AspNetPager简介 AspNetPager是一款开源.简单易用.可定制化等等各种优点的Web分页控件. 2.使用方法 1)下载AspNetPager.dll文件(http://www.we ...

  7. iOS:分页控件UIPageControl的使用

    分页控件:UIPageControl   功能:通常搭配滚动视图一起使用,设置pagingEnabled=YES即可,UIScrollView会被分割成多个独立页面,用户的滚动体验则变成了页面翻转,一 ...

  8. 类似web风格的 Winform 分页控件

    背景 最近做一个Winform的小程序,需要用到分页,由于之前一直在用 TonyPagerForWinForm.dll ,但该库没有源代码,网上找的也不全面,索性就准备自己改造一个.在园子里翻了一下, ...

  9. 基于Bootstrap仿淘宝分页控件实现

    .header { cursor: pointer } p { margin: 3px 6px } th { background: lightblue; width: 20% } table { t ...

随机推荐

  1. [读书笔记] R语言实战 (三) 图形初阶

    创建图形,保存图形,修改特征:标题,坐标轴,标签,颜色,线条,符号,文本标注. 1. 一个简单的例子 #输出到图形到pdf文件 pdf("mygrapg.pdf") attach( ...

  2. MyBatis学习总结(1)——MyBatis快速入门

    一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...

  3. 3.is null和is not null

    3.WHERE中使用is null和is not null   //查询工资是null空值的人   select * from person where salary is null;   //查询工 ...

  4. 树莓派学习笔记—— 源码方式安装opencv

    0.前言     本文介绍怎样在树莓派中通过编译源码的方式安装opencv,并通过一个简单的样例说明怎样使用opencv.     很多其它内容请參考--[树莓派学习笔记--索引博文] 1.下载若干依 ...

  5. Objective-C基础笔记(3)OC的内存管理

    Objective-C的内存基本管理 在OC中每一个变量都保存着引用计数器,当这个对象的引用计数器为0的时候该对象会被回收.当使用alloc.new或者copy创建一个对象的时候,对象的引用计数器被置 ...

  6. JDBC-连接数据库代码

    package com.zxc.connection; import java.sql.Connection; import java.sql.DriverManager; public class ...

  7. poj3071之概率DP

    Football Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 2667   Accepted: 1361 Descript ...

  8. node10---GET请求和POST请求的参数

    GET请求的参数在URL中,在原生Node中,需要使用url模块来识别参数字符串.在Express中,不需要使用url模块了.可以直接使用req.query对象. ● POST请求在express中不 ...

  9. Vmware Workstation及Centos6.8 的安装

    转自:http://www.mamicode.com/info-detail-1462939.html 一.什么是Vmware Workstation Vmware Workstation是Vmwar ...

  10. 11.使用boostregex遭遇无法打开libboost_regex-vc120-mt-sgd-1_62.lib的问题

    通过Boost库可以在C++项目中使用正则表达式,配置好环境后链接过程出现”无法打开libboost_regex-vc120-mt-sgd-1_62.lib”的错误.  原因是按照官方生成lib的方法 ...