class ViewController: UIViewController, UIScrollViewDelegate{

var scrollView: UIScrollView?

var images: NSMutableArray = NSMutableArray(capacity: 5)

override func viewDidLoad() {

super.viewDidLoad()

//

self.title = "图片浏览"

self.automaticallyAdjustsScrollViewInsets = false

scrollView = UIScrollView(frame: self.view.bounds)

self.view.addSubview(scrollView!)

//不显示滚动条

scrollView?.showsHorizontalScrollIndicator = false

scrollView?.showsVerticalScrollIndicator = false

//设置分页显示

scrollView?.pagingEnabled = true

//设置背景颜色

scrollView?.backgroundColor = UIColor.redColor()

//设置内容视图大小

scrollView?.contentSize = CGSize(width: self.view.frame.size.width * 5, height: self.view.frame.size.height)

scrollView?.delegate = self

//加载图片

for index in 0...5 {

let image: UIImage! = UIImage(named: "\(index).JPG")

let photoScrollView:PhotoScrollView! = PhotoScrollView(frame: CGRect(x: self.view.frame.size.width * CGFloat(index), y: 0, width: self.view.frame.size.width, height: self.view.frame.size.height))

photoScrollView.tag = 200+index

photoScrollView.backgroundColor = UIColor(red:0.4, green: 1, blue: 1, alpha: 1)

photoScrollView.image = image

self.scrollView?.addSubview(photoScrollView)

}

}

func scrollViewDidEndDecelerating(scrollView: UIScrollView)

{

let currentIndex = Int(scrollView.contentOffset.x/self.view.bounds.width)

if currentIndex != index {

let photoScrollView = scrollView.viewWithTag(200+index) as! PhotoScrollView;

//还原比例大小

photoScrollView.setZoomScale(1, animated: false)

}

index = currentIndex

}

var index:NSInteger = 0

}

2.设置img

class PhotoScrollView: UIScrollView, UIScrollViewDelegate {

var _image:UIImage!

var image:UIImage! {

get {

return self._image

}

set {

_image = newValue

let imgView:UIImageView = self.viewWithTag(100) as! UIImageView

imgView.backgroundColor = UIColor.greenColor()

imgView.image = image

}

}

override init(frame: CGRect) {

super.init(frame: frame)

let imgView:UIImageView! = UIImageView(frame: self.bounds)

imgView.tag = 100

self.addSubview(imgView)

//取消滑动条

self.showsHorizontalScrollIndicator = false

self.showsVerticalScrollIndicator = false

self.delegate = self

//设置最大、最小缩放比例

self.maximumZoomScale = 3

self.minimumZoomScale = 1

}

required init?(coder aDecoder: NSCoder) {

super.init(coder: aDecoder)

}

func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? {

return self.viewWithTag(100)

}

}

Swift 图片浏览器的更多相关文章

  1. swift项目初体验--教你打造一款个性化图片浏览器(篇幅过大,慎入)

    项目需求:做一个图片浏览器,点击图片查看大图,大图模式下,左右滚动能查看不同的图片. 项目的主要核心技术:图片的弹出和消失动画     项目源代码: Photo-Browser   一.对代码进行重构 ...

  2. iOS Swift WisdomScanKit图片浏览器功能SDK

    iOS Swift WisdomScanKit图片浏览器功能SDK使用 一:简介      WisdomScanKit 由 Swift4.2版编写,完全兼容OC项目调用. WisdomScanKit的 ...

  3. 纯JS打造比QQ空间更强大的图片浏览器-支持拖拽、缩放、过滤、缩略图等

    在线演示地址(打开网页后,点击商家图册): http://www.sport7.cn/cc/jiangnan/football5.html 先看一看效果图: 该图片浏览器实现的功能如下: 1. 鼠标滚 ...

  4. iOS开发系列--无限循环的图片浏览器

    --UIKit之UIScrollView 概述 UIKit框架中有大量的控件供开发者使用,在iOS开发中不仅可以直接使用这些控件还可以在这些控件的基础上进行扩展打造自己的控件.在这个系列中如果每个控件 ...

  5. 一步一步打造自己的Android图片浏览器(原创)

    今天我们试着来制作一个自己的Android图片浏览器. 图片浏览器应该具有什么功能呢?鉴于不同的人不同的理解,这里提出一个基本的需求: 搜索手机内的所有图片,展示于一个列表中: 列表中展示的是图片的缩 ...

  6. Android 图片浏览器 从原来位置放大至全屏显示

    android 图片浏览器 特点: 1.从网络加载图片,只需要传图片地址数组即可 2.点击图片,从原来位置放大至全屏 3.支持手势操作 4.完全自定义布局 项目源码请到GitHub下载:https:/ ...

  7. Atitit图片复制父目录给你设计的实现 基于win 图片浏览器

    Atitit图片复制父目录给你设计的实现 基于win 图片浏览器 打开属性,获取其路径...1 Ahk参数传递,使用环境变量即可1 如何ahk异常转换为java异常1 如何获取ahk的输出.1 C:\ ...

  8. ViewPager做图片浏览器,加载大量图片OOM的问题修正

    /** * @author CHQ * @version 1.0 * @date 创建时间: 2016/7/26 17:18 * @parameter * @return * 图片查看器 * //可以 ...

  9. QT_SVG格式图片浏览器_源代码下载_详细注释

    源代码链接: http://pan.baidu.com/s/1pKA5Vcv 密码: ib2x 注:SVG格式图片特点: 1. 文件小 2. 图像中文字独立于图像, 可以编辑,可搜索. 3.没有字体限 ...

随机推荐

  1. hdfs HA原理

    早期的hadoop版本,NN是HDFS集群的单点故障点,每一个集群只有一个NN,如果这个机器或进程不可用,整个集群就无法使用.为了解决这个问题,出现了一堆针对HDFS HA的解决方案(如:Linux ...

  2. NFS-网络文件共享服务

    目录 NFS介绍 什么是NFS(Network File System) 搭建NFS服务需要的软件包 极简步骤搭建NFS服务 准备两台机器 配置服务端(nfs-server) 配置客户端(web-cl ...

  3. PAT 1094 The Largest Generation[bfs][一般]

    1094 The Largest Generation(25 分) A family hierarchy is usually presented by a pedigree tree where a ...

  4. 2.7 The Object Model -- Bindings, Observers, Computed Properties:What do I use when?

    有时候新用户在使用计算属性.绑定和监视者时感到困惑.下面是一些指导方针: 1. 使用computed properties来合成其他属性,以构建新的属性.computed properties不应该包 ...

  5. Specifications查询

    Spring Data JPA支持JPA2.0的Criteria查询,相应的接口是JpaSpecificationExecutor. Criteria 查询:是一种类型安全和更面向对象的查询 这个接口 ...

  6. 234. Palindrome Linked List(判断链表是否回文)

    Given a singly linked list, determine if it is a palindrome. Follow up:Could you do it in O(n) time ...

  7. VS2010/MFC编程入门之十三(对话框:属性页对话框及相关类的介绍)

    前面讲了模态对话框和非模态对话框,本节开始鸡啄米讲一种特殊的对话框--属性页对话框.另外,本套教程所讲大部分对VC++各个版本均可适用或者稍作修改即可,但考虑到终究还是基于VS2010版本的,所以将& ...

  8. asp.net 获取mp3 播放时长

    1 Shell32 //添加引用:COM组件的Microsoft Shell Controls And Automation //然后引用 using Shell32; //如果出现“无法嵌入互操作类 ...

  9. c++第十九天

    p109~p110: C风格字符串 特点: 1.不方便,不安全,尽量不使用. 2.必须以 '\0'结束.(只有这样才能使用C风格字符串函数) 3.一般利用指针操作这些字符. 4.可以用字符串字面值来初 ...

  10. PHP获取代码段执行的毫秒时间和消耗内存

    我们在项目开发经常需要做一些优化型测试,比如优化代码段,排查代码段效率问题,或者降低内存消耗成本. <?php $start_memory = memory_get_usage(); //开始内 ...