转自:http://unmi.cc/use-uiscrollview/

iPhone/iPad 中 UIScrollView 还是经常要用到的,这里作了一个使用它最简单的例子,一个 ScrollView 中放了三个 UIView。这三个 UIView 分别设置了不同的背景色,它们在 ScrollView 中可以一页一页的滚动。

这段代码放在 UIViewController 的 viewDidLoad 方法中执行的,请注意每个 Frame 和 ScrollView 的关键属性,如 contentSize。ScrollView 中按页滚动时每次走动一个 ScrollView 的宽度(横向时) 或高度(纵向时)。看下面两张图:

    

第一张图是用属性 contentOffset 设置的第二个 View 为起努 View,中间例如为向左滚动时,默认出现滚动条,第三张图为滚动到了红色面板,注意每个 View 间的缝隙,也是用来作为 View 周围边距的。

上面效果的代码如下,已加上了详细的注释:

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    //设定 ScrollView 的 Frame,逐页滚动时,如果横向滚动,按宽度为一个单位滚动,纵向时,按高度为一个单位滚动
    UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(50, 0, 210, 100)];
    scrollView.backgroundColor = [UIColor grayColor]; // ScrollView 背景色,即 View 间的填充色
    
    //向 ScrollView 中加入第一个 View,View 的宽度 200 加上两边的空隙 5 等于 ScrollView 的宽度
    UIView *view1 = [[UIView alloc] initWithFrame:CGRectMake(5,5,200,90)];
    view1.backgroundColor = [UIColor redColor];
    [scrollView addSubview:view1];
    
    //第二个 View,它的宽度加上两边的空隙 5 等于 ScrollView 的宽度,两个 View 间有 10 的间距
    UIView *view2 = [[UIView alloc] initWithFrame:CGRectMake(215,5,200,90)];
    view2.backgroundColor = [UIColor greenColor];
    [scrollView addSubview:view2];
    
    //第三个 View
    UIView *view3 = [[UIView alloc] initWithFrame:CGRectMake(425,5,200,90)];
    view3.backgroundColor = [UIColor blueColor];
    [scrollView addSubview:view3];
    
    [self.view addSubview:scrollView];
    
    //这个属性很重要,它可以决定是横向还是纵向滚动,一般来说也是其中的 View 的总宽度,和总的高度
    //这里同时考虑到每个 View 间的空隙,所以宽度是 200x3+5+10+10+5=630
    //高度上与 ScrollView 相同,只在横向扩展,所以只要在横向上滚动
    scrollView.contentSize = CGSizeMake(630, 100);
    
    //用它指定 ScrollView 中内容的当前位置,即相对于 ScrollView 的左上顶点的偏移
    scrollView.contentOffset = CGPointMake(210, 0);
    
    //按页滚动,总是一次一个宽度,或一个高度单位的滚动
    scrollView.pagingEnabled = YES;
}

不像 UIView 有相应的 UIViewController,UIScrollView 没有相对应的 UIScrollViewController,但 UIScrollView 也有事件,只是您需要自己来指定 UIScrollView 的 Delegate 才行,这个 Delegate 要应用协议 UIScrollViewDelegate 的方法。

关于 ScrollView 的一些属性可以在 Xcode 代码提示中看到,也可以在 Interface Builder 中看到,以及每一个属性的默认取值是什么也一目发然,如下图为 Xib 中某个 ScrollView 的属性面板:

参考:1. UIScrollView 原理详解

UIScrollView 的基本用法的更多相关文章

  1. iOS基础篇(十五)——UIScrollView的基本用法

    滚动视图(UIScrollView)通常用于显示内容尺寸大于屏幕尺寸的视图. 一.基本属性 1.CGSize contentSize :设置UIScrollView的滚动范围 2.CGPoint co ...

  2. Swift - 滚动视图(UIScrollView)的用法

    1,当图片尺寸超过屏幕时,使用UIScrollView可以实现滚动条视图,即手指触摸滚动屏幕方便浏览整个页面. 1 2 3 4 5 6 var scrollView=UIScrollView() sc ...

  3. UIScrollView方法 属性详解

    --前言:UIScrollView使用非常广,本文研究UIScrollView各属性和方法,明白它们的意义.作用.在后面的一篇文章有整理UIScrollView一些常见用法以及一些效果的实现思路. - ...

  4. 《iOS 7 应用开发实战详解》

    <iOS 7 应用开发实战详解> 基本信息 作者: 朱元波    管蕾 出版社:人民邮电出版社 ISBN:9787115343697 上架时间:2014-4-25 出版日期:2014 年5 ...

  5. UIScrollView的用法,属性

    iOS开发学习笔记-UIScrollView的用法 转载地址:http://www.jianshu.com/p/bcaf5cdfaa7e# UIScrollView是用来在屏幕上显示那些在有限区域内放 ...

  6. 学习笔记之-------UIScrollView 基本用法 代理使用

    //contentSize.contentInset和contentOffset 是 scrollView三个基本的属性. // 滚动 self.ScrollView.contentSize =sel ...

  7. 简述UIScrollView的属性和用法

    contentOffset 默认CGPointZero,用来设置scrollView的滚动偏移量.       // 设置scrollView的滚动偏移量       scrollView.conte ...

  8. 给iOS开发新手送点福利,简述UIScrollView的属性和用法

    UIScrollView 1.   contentOffset 默认CGPointZero,用来设置scrollView的滚动偏移量. // 设置scrollView的滚动偏移量 scrollView ...

  9. UIScrollView的封装

    UIScrollView的封装 效果 特点 1.用法简单,尺寸大小,随意设置位置 2.可以有多个数据源的数据,可以定制不通的界面(如同上图,一个有文字,一个没有文字) 3.能够实现点击事件 用法 1. ...

随机推荐

  1. Python学习(七)面向对象 ——类和实例

    Python 面向对象 —— 类和实例 类 虽然 Python 是解释性语言,但是它是面向对象的,能够进行对象编程.至于何为面向对象,在此就不详说了.面向对象程序设计本身就很值得深入学习,如要了解,请 ...

  2. c++学习之多态(虚函数和纯虚函数)

    c++是面向对象语言,面向对象有个重要特点,就是继承和多态.继承之前学过了,就是一种重用类的设计方式.原有的类叫父类,或者基类,继承父类的类叫子类.在设计模式中,我们总是要避免继承,推荐用组合.因为继 ...

  3. adore-ng笔记和Linux普通用户提权

    官网:https://github.com/trimpsyw/adore-ng 安装: [root@xuegod63 ~]# unzipadore-ng-master.zip [root@xuegod ...

  4. MFC中显示图像的放大、缩小、移动功能

    StretchBlt函数直接对图片进行放大,缩小,显示位置变换. 这个函数有两种形态一种全局函数是这样的:  BOOL StretchBlt(HDC hdcDest, int nXOriginDest ...

  5. (剑指Offer)面试题38:数字在排序数组中出现的次数

    题目: 统计一个数字在排序数组中出现的次数. 思路: 1.顺序遍历 顺序扫描一遍数组,统计该数字出现的次数. 时间复杂度:O(n) 2.二分查找 假设我们需要找的数字是k,那么就需要找到数组中的第一个 ...

  6. 【Python】Django用户、认证、鉴权模块使用

    此文是总结Django官方网站里面的Document的文章 User authentication in Django http://www.djangoproject.com/documentati ...

  7. Thinkphp学习笔记3-前置和后置操作

    前置和后置操作指的是在执行某个操作方法之前和之后会自动调用的方法,不过仅对访问控制器有效. 其他的分层控制器层和内部调用控制器的情况下前置和后置操作是无效的. 系统会检测当前操作是否具有前置和后置操作 ...

  8. TeamTalk 5

    TeamTalk 5 Repository for TeamTalk 5 development. Download TeamTalk 5 SDK To build the TeamTalk clie ...

  9. share_ptr

    1.为了保证不会重复释放内存,auto_ptr的copy构造和copy赋值都是破坏性操作,执行后,导致右操作数的指针为0.这就出现了,copy构造或者copy赋值后,两个对象不相等了. 2.auto_ ...

  10. Project Euler 001-006 解法总结

    Problem 1. Find the sum of all the multiples of 3 or 5 below 1000.   题目要求找出所有1000以下的3或者5的倍数之和.   最简便 ...