swift详解之十八------------ScrollView

ScrollView

注:本小节详细介绍scrollView的用法



UIScrollView是一个能够滚动的视图控件,可以用来展示大量的内容,并且可以通过滚动查看所有的内容

UIScrollView的用法,将需要展示的内容添加到UIScrollView中

设置UIScrollView的contentView属性,告诉UIScrollView所有内容的尺寸

let scroll = UIScrollView();
        scroll.backgroundColor = UIColor.grayColor()
        scroll.frame = CGRectMake(10, 30, 100,150)  //设置scrollview的大小
        scroll.contentSize = CGSizeMake(400, 150)   //内容大小
        scroll.pagingEnabled = true                 //是否支持分页
        //scroll.contentOffset = CGPointMake(0, -10)
        scroll.contentInset = UIEdgeInsets(top: 10,left: 10,bottom: 10,right: 10) //内边距

        let imageView =  UIImageView(image: UIImage(named: "dog1"))
        imageView.frame = CGRectMake(10, 10, 80, 130)
        scroll.addSubview(imageView)

        let imageView1 =  UIImageView(image: UIImage(named: "dog2"))
        imageView1.frame = CGRectMake(100+10, 10,80, 130)
        scroll.addSubview(imageView1)

        let imageView2 =  UIImageView(image: UIImage(named: "dog3"))
        imageView2.frame = CGRectMake(100*2+10, 10, 80, 130)
        scroll.addSubview(imageView2)

        let imageView3 =  UIImageView(image: UIImage(named: "dog4"))
        imageView3.frame = CGRectMake(100*3+10, 10, 80, 130)
        scroll.addSubview(imageView3)

        self.view.addSubview(scroll)

这里我创建了一个scrollview 并设置的一些属性(都有注释) , 然后 添加了四个小狗的图片 。 效果就是横向拖动可轮换显示四张图

滑动可轮换

下面介绍一个可缩放的示例


        let scrollview = UIScrollView();
        scrollview.frame = CGRectMake(10, 200, viewWidth-20, 300)
        scrollview.backgroundColor = UIColor.purpleColor()
        scrollview.contentInset = UIEdgeInsets(top: 10, left:0, bottom: 0, right: 0)

        imageView4 =  UIImageView(image: UIImage(named: "pic1"))
        imageView4!.frame = CGRectMake(0, 10,viewWidth-20, 280)
        scrollview.addSubview(imageView4!)
        scrollview.contentSize=CGSizeMake( viewWidth-20, 300);
        scrollview.maximumZoomScale=2.0; //设置最大伸缩比例
        scrollview.minimumZoomScale=0.5; //设置最小伸缩比例

同样是设置一些基本属性 , 然后设置伸缩比例

    class ViewController: UIViewController , UIScrollViewDelegate

让我们的controller实现UIScrollViewDelegate这个协议

 scrollview.delegate = self

把scrollview的代理 设成当前对象

  //告诉scrollview要缩放的是哪个子控件
    func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? {
        return imageView4
    }

然后实现这个方法,告诉scrollview要缩放的是哪个子控件

运行看看 确实可以缩放了。。

下面看看UIScrollViewDelegate 中的一些其他的事件

func scrollViewDidScroll(scrollView: UIScrollView) {
        print("只要滚动了就会触发哦。")
    }

    func scrollViewWillBeginDragging(scrollView: UIScrollView) {
        print("开始拖拽视图")
    }

    func scrollViewDidEndDragging(scrollView: UIScrollView, willDecelerate decelerate: Bool) {
        print("结束滚动")
    }

    func scrollViewWillBeginDecelerating(scrollView: UIScrollView) {
        print("将开始降速时")
    }

    func scrollViewDidEndDecelerating(scrollView: UIScrollView) {
        print("减速停止了时执行,手触摸时执行执行")
    }

    func scrollViewDidEndScrollingAnimation(scrollView: UIScrollView) {
        print("滚动动画停止时执行,代码改变时触发,也就是setContentOffset改变时")
    }

    func scrollViewDidEndZooming(scrollView: UIScrollView, withView view: UIView?, atScale scale: CGFloat) {
        print("完成放大缩小时调用")
    }

这里面都清楚的记载了什么时候执行。。很清楚,大家可以试试

最后再附上这些实例的源码(本实例在xcode 7 beta上实现) :scrollview

都提交了发现还少点什么 , 原来少了这个图 。(本图来源于网络)

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-12 08:26:40

swift详解之十八------------ScrollView的相关文章

swift详解之十-------------异常处理、类型转换 ( Any and AnyObject )

异常处理.类型转换 ( Any and AnyObject ) 1.错误处理 (异常处理) swift 提供第一类错误支持 ,包括在运行时抛出 ,捕获 , 传送和控制可回收错误.在swift中 ,错误用复合 ErrorType 协议的值表示 . Swift枚举把一系列相关的错误组合在一起.同时可以把一些相关的值和错误关联在一起 . 因此 编译器会为实现ErrorType协议的Swift枚举类型自动实现相应的合成 这里看个很简单的小例子. enum WrongName:ErrorType{ cas

swift详解之十四 -----------NSThread 异步下载图片

NSThread 异步下载图片 在IOS中处理多线程有三个方案 , NSThread .NSOperation .GCD .当然GCD应该是最方便的 ,我们一个一个学 .先理解底层的,最后再使用最方便的 . NSThread: 优点:NSThread 比其他两个轻量级 缺点:需要自己管理线程的生命周期,线程同步.线程同步对数据的加锁会有一定的系统开销 我们先研究下用NSThread 异步加载网络图片 : NSThread有两种创建方式 ,一种是通过实例方法.一种是通过类方法. let threa

swift详解之十二-----------------泛型

泛型 注:本文详细讲解泛型,对写一些公共方法,共用的东西的时候很有帮助.想成为一个优秀的程序员吗?这个必须掌握 泛型代码可以让你写出根据自我需求定义.适用于任何类型的,灵活可重用的函数和类型. 下面直接看一个简单的示例 , 泛型其实就是在写的时候不指定是哪种类型 , 只有再用得时候才指定类型 ,这些类型可以给一些限定.例如 Array Dictionary 等 写一个简单的交换数据的方法,不限定类型 func swapTwoValue<T>(inout a:T,inout _ b:T){ le

swift详解之十九--------------UITableView的基本操作(下拉刷新,新增删除,分组,检索等)

UITableView的基本操作(下拉刷新,新增删除,分组,检索等) 注:本小结总结UITableview的一些基本用法 UITbleView继承自UIScrollView,只能用来显示一列数据(目前就只认识到这里),纵向滑动. 一般有两种方式来实现,直接用UITableViewController , 占满整个屏幕 .不用手动实现UITableViewDataSource 和UITableViewDelegate .另一种方式在UIViewController 中.我们看看这种方式 let t

swift详解之十六-----------GCD基础部分

GCD基础部分 注:本节主要详细讲解线程同步的一些基本概念和GCD基础部分 GCD (Grand Central Dispatch) 首先我们来了解处理线程中的一些基本概念 : 串行:同时只能有一个任务被执行 并发:同时可以有多个任务执行 同步:同步任务会阻塞当前线程,知道任务完成 异步:预定的任务会完成但不会等它完成,因此,一个异步函数不会阻塞当前线程去执行下一个函数. 临界区:就是一段代码不能被并发执行,也就是,两个线程不能同时执行这段代码.(不同代码去操作共享资源可能会变质) 死锁:多个线

swift详解之十五------------NSThread线程同步锁

NSThread线程同步锁 上小节用NSThread实现读取网络图片 , 这节用NSThread 模拟一个卖票的例子 .用NSLock 或者NSCondition 锁定资源 var total = 100 //总票数 var w1 = 0 //窗口1卖出票数 var w2 = 0 //窗口2卖出票数 var isSell = true //是否出售 var lock:NSLock? var condition:NSCondition? 这里首先定义一些变量 然后再点击卖票的时候,开启连个线程模仿

Linux下套接字详解(十)---epoll模式下的IO多路复用服务器

epoll模型简介 epoll可是当前在Linux下开发大规模并发网络程序的热门人选,epoll 在Linux2.6内核中正式引入,和select相似,其实都I/O多路复用技术而已,并没有什么神秘的. 其实在Linux下设计并发网络程序,向来不缺少方法,比如典型的Apache模型(Process Per Connection,简称PPC),TPC(Thread PerConnection)模型,以及select模型和poll模型,那为何还要再引入Epoll这个东东呢?那还是有得说说的- 常用模型

swift详解之二十二-----------UINavigationController的基本用法和页面传值几种方式

UINavigationController的基本用法和页面传值几种方式 本文介绍UINavigationController基本用法,因为涉及多页面顺便介绍页面传值 1.手写代码创建UINavigationController 手写方式创建很简单 , 首先创建一个项目 , 默认是从storyboard 加载的.这时候首先去掉默认加载方式 . 然后在AppDelegate.swift 的didFinishLaunchingWithOptions 中创建 代码如下: func applicatio

swift详解之二十四---------------CoreAnimation(一)CALayer

CoreAnimation(一)CALayer CoreAnimation 算是一个大话题 ,要实现很多炫酷的动画,必须掌握它,掌握它之前 ,先来了解CALayer - 图层 CALayer 我们平常都是用UIView 来构建应用,CALayer 是图层的一个属性 ,view.layer . 它和UIview一样都是一些被层级关系树管理的矩形块 ,如果玩儿过PS ,就会对图层的概念比较清晰 .CALayer 也可以包含一些一些内容(像图片,文本或者背景色),管理子图层的位置,也有一些方法和属性用