滚动视图(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. vue项目中,如何对static文件夹下的静态文件添加时间戳,以达到清除缓存

    例如config.js文件是存放在static文件夹下,里面存放的是websocket信息,需要经常改动.改动了以后由于缓存信息,使其不生效,因此需要对引入的文件添加时间戳. 最新方法: 注意转义符的 ...

  2. MVC、RPC、SOA、微服务架构之间的区别

    MVC.RPC.SOA.微服务架构之间的区别 一.MVC架构 其实MVC架构就是一个单体架构. 代表技术:Struts2.springMVC.Spring.Mybatis 等等. 二.RPC架构 RP ...

  3. 求第K大的数字

    除了用最大堆(求最小的K个数)或最小堆(求最大的K个数) 可以用partition,然后直到返回index为k为止.参数可以是实际下标.然后返回index,就是partition的pivot的位置.

  4. C++ throw的实验 & 异常类继承关系

    如果定义了 throw() 表示函数不抛出异常,这时候如果还是抛出,会导致运行时错误. #include <iostream> #include <exception> #in ...

  5. CC2540/CC2541 : Set the Peripheral Being Advertising while It is Being Connected

    There is possible to set your CC254X be scanable when it is in connection. But, based on my test,the ...

  6. 一分钟了解Android横竖屏 mdpi hdpi xhdpi xxhdpi xxxhdpi

    DPI:每英寸像素数 简单的屏幕分辨率计算方法: DisplayMetrics metrics = this.getResources().getDisplayMetrics(); float den ...

  7. Linux 设备文件的创建和mdev

    引子 本文是嵌入式企鹅圈开篇--<linux字符设备驱动剖析>的姐妹篇,在上述文章里面我们具体描写叙述了字符设备驱动框架涉及的驱动注冊.通过设备文件来訪问驱动等知识.并明白通过device ...

  8. poj_3071概率dp

    确定好对手就简单了. #include<iostream> #include<cstdio> #include<cstring> #include<algor ...

  9. 无法连接虚拟设备 ide1:0,因为主机上没有相应的设备。您要在每次开启此虚拟机时都尝试连接此虚拟设备吗?

    转自:http://blog.51cto.com/thawliu/1704876 安装虚拟机时出现提示:无法连接虚拟设备 ide1:0,因为主机上没有相应的设备.您要在每次开启此虚拟机时都尝试连接此虚 ...

  10. 大量文件时使用ls

    有时一个目录下的文件实在太多, ls的时候就卡住了. 其实, 如果不加排序的话, 就可以迅速的显示文件. ls -f 解释: -f do not sort, enable -aU, disable - ...