OCUI界面设计:滚动视图与分页控件初探
滚动视图(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界面设计:滚动视图与分页控件初探的更多相关文章
- 【NET】Winform分页控件初探
public partial class WinFormPager : UserControl { ; /// <summary> /// 当前页 /// </summary> ...
- 基于WPF系统框架设计(10)-分页控件设计
背景 最近要求项目组成员开发一个通用的分页组件,要求是这个组件简单易用,通用性,兼容现有框架MVVM模式,可是最后给我提交的成果勉强能够用,却欠少灵活性和框架兼容性. 设计的基本思想 传入数据源,总页 ...
- 在DevExpress程序中使用Winform分页控件直接录入数据并保存
一般情况下,我们都倾向于使用一个组织比较好的独立界面来录入或者展示相关的数据,这样处理比较规范,也方便显示比较复杂的数据.不过在一些情况下,我们也可能需要直接在GridView表格上直接录入或者修改数 ...
- 基于存储过程的MVC开源分页控件--LYB.NET.SPPager
摘要 现在基于ASP.NET MVC的分页控件我想大家都不陌生了,百度一下一大箩筐.其中有不少精品,陕北吴旗娃杨涛大哥做的分页控件MVCPager(http://www.webdiyer.com/)算 ...
- 基于存储过程的MVC开源分页控件
基于存储过程的MVC开源分页控件--LYB.NET.SPPager 摘要 现在基于ASP.NET MVC的分页控件我想大家都不陌生了,百度一下一大箩筐.其中有不少精品,陕北吴旗娃杨涛大哥做的分页控件M ...
- 分页控件AspNetPager学习笔记
1.AspNetPager简介 AspNetPager是一款开源.简单易用.可定制化等等各种优点的Web分页控件. 2.使用方法 1)下载AspNetPager.dll文件(http://www.we ...
- iOS:分页控件UIPageControl的使用
分页控件:UIPageControl 功能:通常搭配滚动视图一起使用,设置pagingEnabled=YES即可,UIScrollView会被分割成多个独立页面,用户的滚动体验则变成了页面翻转,一 ...
- 类似web风格的 Winform 分页控件
背景 最近做一个Winform的小程序,需要用到分页,由于之前一直在用 TonyPagerForWinForm.dll ,但该库没有源代码,网上找的也不全面,索性就准备自己改造一个.在园子里翻了一下, ...
- 基于Bootstrap仿淘宝分页控件实现
.header { cursor: pointer } p { margin: 3px 6px } th { background: lightblue; width: 20% } table { t ...
随机推荐
- JavaScript变量提升(Hoisting)的小案例
变量提升(Hoisting)的小案例 执行以下代码的结果是什么?为什么? 答案 这段代码的执行结果是undefined 和 2. 这个结果的原因是,变量和函数都被提升(hoisted) 到了函数体的顶 ...
- CSVHelper读出乱码 解决方案
using (FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read)) using (StreamRe ...
- [POJ3233]Matrix Power Series 分治+矩阵
本文为博主原创文章,欢迎转载,请注明出处 www.cnblogs.com/yangyaojia [POJ3233]Matrix Power Series 分治+矩阵 题目大意 A为n×n(n<= ...
- SQL SERVER-in,between,like
and 1 LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式 ( 可以使用正则表达式) select * from [User] where UserName like '%r' -- 以 ...
- C++异常注意事项
C++里面catch对于类型转换,限制比参数传递时候要多: 不可以进行标准算术转换和类的自定义转换:在函数参数匹配的过程中,可以进行很多的类型转换.但是在异常匹配的过程中,转换的规则要严厉. 标准算术 ...
- volley源代码解析(六)--HurlStack与HttpClientStack之争
Volley中网络载入有两种方式,各自是HurlStack与HttpClientStack.我们来看Volley.java中的一段代码 if (stack == null) {//假设没有限定stac ...
- Detours改动段属性漏洞
v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...
- 前端project师养成记:开发环境搭建(Sublime Text必备插件推荐)
为了让自己更像一个前端project师,决定从开发环境開始武装自己. 本文将介绍前段project师开发的一些利器的安装步骤,主要包含了: 1.Node.js的安装 2.Grunt的安装及经常使用插件 ...
- Android 开发之集成百度地图的定位与地图展示
app 应用中,大多数应用都具有定位功能,百度定位就成了开发人员的集成定位功能的首选,近期也在做定位功能,可是发现百度真是个大坑啊, sdk 命名更新了,相关代码却不更新,害得我花费了非常长时间来研究 ...
- Button的Click事件与js函数的两种不同顺序触发方式
先运行js.或者先运行Click事件,近期就遇到了这个问题,開始弄了两个button分别运行,那才叫一个蛋疼... 1.先运行js,再运行Button的Click函数 <asp:Button I ...