随着移动设备,iphone屏幕尺寸的限制。超过内容的屏幕大小为scrollview于,通过滑动来获得。scrollview滑动方向可以是也可以是横向垂直,scrollview可以嵌套,例如,纵向滑动scrollview进入侧滑scrollview中作为子视图。

在考虑加入一个scrollview的时候。我们须要设定scrollview的尺寸,这个属性叫做contentSize,它是一个CGSize类型的,它的尺寸比iphone的屏幕要大:

如今你能够把你想要添加的内容放到这个足够大的scrollview中,比方放一张图片:

你的当前屏幕仅仅能显示scrollview的一部分,假设你想知道屏幕显示的画面在scrollview中的位置,能够通过设定属性contentOffset。它是一个CGPoint类型的:

那么怎样获取当前看到的背景图片aerial的区域呢?由于使用了scrollview的属性bounds,所以须要从scrollview的坐标系转化成aerial的坐标系,否则我们获取的是scrollview的区域。方法例如以下:

来认识一下scrollview:

你能够拖拽一个scrollview到场景中,也能够选中某个view然后Embed In一个Scroll View。

假设你想让某个大图片成为scrollview的背景。那么在把图片加到scrollView中之后记得设置scrollview的尺寸。

你能够通过方法或者属性来调整滑动时的特效:

另外一点须要注意的是scrollview能够局部放大或者缩小。可是你须要指定放大的最大背书和缩小的最小倍数,假设你不设定,默认的值是1,这种话缩放是不起作用的。

另外和我们之前接触的其它视图一样。想要使用缩放功能。你须要实现scrollview的代理,然后实现代理方法,指定一个在其上缩放的视图。完毕这两步之后你就能够进行缩放了。

zoomScale指示当前缩放的比例大小

你能够通过setZoomScale方法来改动它的值。

zoomToRect方法的作用是提供一个矩形框让你的视图去适应这个矩形框,比方指定了如图中所看到的的黄色矩形框,框住了图中的某一部分。

如今放大这一部分,能够看到当框中的内容扩充到了屏幕的尺寸的时候就不能再放大了。

滚动视图的代理有12个代理方法。但是当你没有遵守了这个代理却没有实现这些方法的时候编译器不会报错。这似乎和我们之前了解到的代理有些不同。这是因为一些历史原因造成的。OC中的方法是可选的,但是Swift不同意这样,像scrollview这种古老协议里面的方法都是可选的,Swift进行了桥接。你也能够写一个OC风格另一种方法。只有在前面加keyword@objc能够。

版权声明:本文博主原创文章。博客,未经同意不得转载。

【我们都爱Paul Hegarty】斯坦福大学IOS8公开组个人笔记28 ScrollView 幻灯片视图的更多相关文章

  1. 【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记2 Xcode、Auto Layout及MVC

    原文链接不知道在哪, 接着上一话来讲,上一话中讲到了MVC,那么MVC在IOS8开发中是如何应用的呢?Paul Hegarty老师给我们展示了一个计算器的Demo,首先新建一个工程,老师把AppDel ...

  2. 【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记1 IOS8概述

    首先感谢网易公开课和SwiftV课堂的朋友们辛苦翻译,这个系列是我学习斯坦福IOS8公开课的个人心得体会和笔记,希望能给大家带来启发. 首先我们要知道IOS系统中的结构情况,从贴近硬件的底层到贴近用户 ...

  3. 【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记19 为Demo添加手势

    在这一话中我们将应用上一话学到的知识来为Demo添加手势识别,首先添加一个缩放的功能,其次添加一个拖动功能,使得小人的表情可以随着我们的手指改变. 首先来添加一个缩放手势的识别器,我们来到FaceVi ...

  4. 【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记30 ScrollView Demo实战

    在上一话中我们创建了一个通过URL读取图片的Demo,这个Demo是不能拖动和缩放的.如今给它添加选项让它能够手动切换URL,并把图片加入到ScrollView中. 向Storyboard中拖入一个s ...

  5. 【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记3 Xcode、Auto Layout及MVC

    继续上一话中的计算器Demo.上一话讲到类必须被初始化.类中的属性也必须被初始化,所以你不能仅仅声明而不给它一个处置,那么问题来了,我们从storyboard中拖拽的@IBOutlet为什么仅仅有声明 ...

  6. 【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记38 Unwind Segue反向过渡

    之前我们接触过了segue,这是IOS中最主要的传递方式,今天来解说一下怎样进行反向的segue. 反向过渡的使用前提是发出过渡的MVC必须是由目标MVC直接或者间接正向过渡来的.反向过渡是唯一不会创 ...

  7. 【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记35 UITextField文本框

    本话来介绍UIKit框架中的组件UITextField. UItextField(文本框)和Label看起来看像,可是文本框是能够编辑的.在UI中使用文本框要注意.由于在模拟器上面输入文字是能够使用电 ...

  8. IOS学习之斯坦福大学IOS开发课程笔记(第六课)

    转载请注明出处 http://blog.csdn.net/pony_maggie/article/details/28398697 作者:小马 这节课主要讲述多个MVC是怎样协同工作的.到眼下为止.全 ...

  9. [斯坦福大学2014机器学习教程笔记]第五章-控制语句:for,while,if语句

    在本节中,我们将学习如何为Octave程序写控制语句. 首先,我们先学习如何使用for循环.我们将v设为一个10行1列的零向量. 接着,我们写一个for循环,让i等于1到10.写出来就是for i = ...

随机推荐

  1. 蓝桥杯软件学院webserver,android

  2. hadoop学习;大数据集在HDFS中存为单个文件;安装linux下eclipse出错解决;查看.class文件插件

    sudo apt-get install eclipse 安装后打开eclipse,提示出错 An error has occurred. See the log file /home/pengeor ...

  3. Android中Broadcast Receiver组件具体解释

    BroadcastReceiver(广播接收器)是Android中的四大组件之中的一个. 以下是Android Doc中关于BroadcastReceiver的概述: ①广播接收器是一个专注于接收广播 ...

  4. UC高级编程--实现myls程序

    跟着达内视频,学习UC高级编程,完毕程序小练习. 主要练习的函数为:  int lstat(const char *path, struct stat *buf);  size_t strftime( ...

  5. ipconfig /flushdns 清除系统DNS缓存

    1.ipconfig /flushdns的作用 ipconfig /flushdns 这是清除DNS缓存用的. 当訪问一个站点时系统将从DNS缓存中读取该域名所相应的IP地址,当查找不到时就会到系统中 ...

  6. tar解压出错

    现象 # tar -zxvf aaa.tar.gz tar: This does not look like a tar archive tar: Skipping to next header ta ...

  7. cocos2d-x物业现场

    pushScene()和popScene()用法: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMTYyNjY3MTc=/font/5a6L5L2 ...

  8. Hibernate4 : 持久化你的第一个类

    由于目前我在学校的一个实验室跟老师学习Java EE开发,老师用的是Seam框架接活做项目,所以这一系列的文章将会向Seam方向写..路线大致应该是 : JSP --> Servlet --&g ...

  9. DrectX11学习笔记Texture2D有关

    ///////////////////////////////////////////////////////////////////////////////////// 有时候....有时候.... ...

  10. Java 8 时间日期库的20个使用示例

    java 8是如何处理时间及日期的 有人问我学习一个新库的最佳途径是什么?我的回答是,就是在实际项目中那样去使用它.在一个真实的项目中会有各种各样的需求,这会促使开发人员去探索和研究这个新库.简言之, ...