【我们都爱Paul Hegarty】斯坦福大学IOS8公开组个人笔记28 ScrollView 幻灯片视图
随着移动设备,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 幻灯片视图的更多相关文章
- 【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记2 Xcode、Auto Layout及MVC
原文链接不知道在哪, 接着上一话来讲,上一话中讲到了MVC,那么MVC在IOS8开发中是如何应用的呢?Paul Hegarty老师给我们展示了一个计算器的Demo,首先新建一个工程,老师把AppDel ...
- 【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记1 IOS8概述
首先感谢网易公开课和SwiftV课堂的朋友们辛苦翻译,这个系列是我学习斯坦福IOS8公开课的个人心得体会和笔记,希望能给大家带来启发. 首先我们要知道IOS系统中的结构情况,从贴近硬件的底层到贴近用户 ...
- 【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记19 为Demo添加手势
在这一话中我们将应用上一话学到的知识来为Demo添加手势识别,首先添加一个缩放的功能,其次添加一个拖动功能,使得小人的表情可以随着我们的手指改变. 首先来添加一个缩放手势的识别器,我们来到FaceVi ...
- 【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记30 ScrollView Demo实战
在上一话中我们创建了一个通过URL读取图片的Demo,这个Demo是不能拖动和缩放的.如今给它添加选项让它能够手动切换URL,并把图片加入到ScrollView中. 向Storyboard中拖入一个s ...
- 【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记3 Xcode、Auto Layout及MVC
继续上一话中的计算器Demo.上一话讲到类必须被初始化.类中的属性也必须被初始化,所以你不能仅仅声明而不给它一个处置,那么问题来了,我们从storyboard中拖拽的@IBOutlet为什么仅仅有声明 ...
- 【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记38 Unwind Segue反向过渡
之前我们接触过了segue,这是IOS中最主要的传递方式,今天来解说一下怎样进行反向的segue. 反向过渡的使用前提是发出过渡的MVC必须是由目标MVC直接或者间接正向过渡来的.反向过渡是唯一不会创 ...
- 【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记35 UITextField文本框
本话来介绍UIKit框架中的组件UITextField. UItextField(文本框)和Label看起来看像,可是文本框是能够编辑的.在UI中使用文本框要注意.由于在模拟器上面输入文字是能够使用电 ...
- IOS学习之斯坦福大学IOS开发课程笔记(第六课)
转载请注明出处 http://blog.csdn.net/pony_maggie/article/details/28398697 作者:小马 这节课主要讲述多个MVC是怎样协同工作的.到眼下为止.全 ...
- [斯坦福大学2014机器学习教程笔记]第五章-控制语句:for,while,if语句
在本节中,我们将学习如何为Octave程序写控制语句. 首先,我们先学习如何使用for循环.我们将v设为一个10行1列的零向量. 接着,我们写一个for循环,让i等于1到10.写出来就是for i = ...
随机推荐
- xcode中找不到XXX.dylib
xcode中找不到 XXX.dylib 了,比如libz.tbd 如果要用到 libz.dylib,可以用下面的办法,来自 Stack Overflow. Go to Build Phases > ...
- VC++ 在两个文件互相包含时会出现的错误
首先,要分别在两个文件中实现以下两个类 class Object { public: NewType ToType(); }; class NewType : public Object { } -- ...
- 关于使用X-UA-Compatible来设置IE浏览器兼容模式
原文地址:http://www.cnblogs.com/nidilzhang/archive/2010/01/09/1642887.html 前言 为了帮助确保你的网页在所有未来的IE版本都有一致的外 ...
- Nginx安装手冊以及图片server部署
1. 安装gcc yum install gcc 2. 安装pcre,pcre-devel 在zhoulh文件夹下建立source build文件夹 mkdir source bu ...
- 使用Hamcrest增强JUnit的测试能力
package com.jadyer.service; import java.util.HashMap; import java.util.Map; import org.hamcrest.Matc ...
- Operand should contain 1 column(s)
今天sql当测试发现错误:Operand should contain 1 column(s). 因为in背后有多种条件字段,in只有有背后场.
- hdu1561(树形背包)
给定n,m表示n个城堡,我们可以选择攻占m个城堡.要使得价值最大 接下来n行 a b, 第i行的a b,表示攻占第i个城堡的价值为b,但需要先攻占第a个城堡 如果有多个a=0的点,那么就不是一棵树 ...
- gitLab添加ssh key
电脑新装了一台虚拟机,想要和gitLab建立一个安全的ssh连接,步骤如下 1.本机生成ssh key 系统环境:Linux 使用root用户登录,执行命令:ssh-keygen -t rsa -C ...
- easyui DateTimeBox OK
一.datetimebox ok按钮没有点击事件,但是可以通过onSelect事件模拟出“点击了ok按钮一样的效果”,我的代码: 关键: 0,理解DateTimeBox控件,这个控件是由DateB ...
- C# Windows Phone 8 WP8 开发,将WebClient的DownloadStringCompleted事件改成非同步的awiat方法。
原文:C# Windows Phone 8 WP8 开发,将WebClient的DownloadStringCompleted事件改成非同步的awiat方法. 一般我们在撰写Windows Phone ...