swift学习笔记-UI篇之UIImageView
1.基本使用
将要使用的图片拖入到项目里,我这里使用的是名为“1.jpg”的图片,然后创建UIImageView,并设置要显示的图片为"1.jpg"//1. 基本使用
let imageView = UIImageView(frame: CGRectMake(100, 10, 200, 200))
imageView.image = UIImage(named:"1.jpg")
self.view.addSubview(imageView)
2.UIImageView的用户交互
UIImageView的用户交互默认是关闭的,也就是说添加到ImageView上的事件都不会响应,需要我们手动设置userInteractionEnabled属性为真,我们给UIImageVIew添加一个点击手势来测试一下,如果注释掉第一行,点击就会失去反应//2. 用户交互
imageView.userInteractionEnabled = true
let tap = UITapGestureRecognizer(target: self, action: Selector("tapAction:"))
imageView.addGestureRecognizer(tap)
func tapAction(tap :UITapGestureRecognizer) {
let scale :CGFloat = 1.2
var frame = tap.view!.frame
frame = CGRectMake(frame.origin.x * scale, frame.origin.y * scale, frame.size.width * scale, frame.size.height * scale)
tap.view!.frame = frame
}
3.图片拉伸
1. 整张图片拉伸
为了便于区分,我们给self.view一个红色背景,imageView为绿色,同时改变imageView的高度为300。原图尺寸为136 × 94//1) 图片整体拉伸
self.view.backgroundColor = UIColor.redColor()
imageView.backgroundColor = UIColor.greenColor()
var frame = imageView.frame
frame = CGRectMake(frame.origin.x, frame.origin.y, frame.size.width, 300)
imageView.frame = frame
// 设置拉伸模式
/*
ScaleToFill: 填充模式,图片不会保持原来的比例
ScaleAspectFit: 图片保持原来的比例,宽度填充,高度自适应
ScaleAspectFill: 图片保持原来的比例,高度填充,宽度自适应
*/
imageView.contentMode = UIViewContentMode.ScaleAspectFit
2. 部分拉伸
部分拉伸的原理:通过UIEdgeInsets设置拉伸区域,通过减去top、left、bottom、right的距离,得到的中间区域就是拉伸区域。通过平铺拉伸区域或者拉伸拉伸区域来实现部分拉伸。具体计算请看resizableImageWithCapInsets:方法的探析//2) 部分拉伸
let imageView2 = UIImageView(frame: CGRectMake(10, 320, 200, 94))
// imageView2.image = UIImage(named: "qipao.png")
imageView2.backgroundColor = UIColor.greenColor()
self.view.addSubview(imageView2)
// 设置拉伸
// stretch:通过拉伸来填充
imageView2.image = UIImage(named: "qipao.png")!.resizableImageWithCapInsets(UIEdgeInsetsMake(52, 40, 36, 64), resizingMode: UIImageResizingMode.Stretch)
// tile:通过重复来填充
// imageView2.image = UIImage(named: "qipao.png")!.resizableImageWithCapInsets(UIEdgeInsetsMake(52, 40, 36, 64), resizingMode: UIImageResizingMode.Tile)
4.图片动画
先把动画素材导入到项目,创建数组读取图片,再赋值给imageView的animationImages属性,分别设置好动画时间和循环次数后开启动画//4. 图片动画
// 创建UIimage数组,数组每个元素为一帧
let animationImages = NSMutableArray()
for var i = 1; i <= 40; i++ {
let image = UIImage(named: "v\(i).jpg")
animationImages.addObject(image!)
}
let array = animationImages as Array as? [UIImage]
// 设置animationImages
imageView.animationImages = array
// 设置动画时间
imageView.animationDuration = 9
// 设置动画循环次数,0为无限循环
imageView.animationRepeatCount = 0
// 开启动画
imageView.startAnimating()
5.源码下载
https://github.com/ljcoder2015/SwiftStudyNote/tree/master/swift-UIImageView
原文链接:http://www.jianshu.com/p/f7fca80a7235
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
swift学习笔记-UI篇之UIImageView的更多相关文章
- 【swift学习笔记】二.页面转跳数据回传
上一篇我们介绍了页面转跳:[swift学习笔记]一.页面转跳的条件判断和传值 这一篇说一下如何把数据回传回父页面,如下图所示,这个例子很简单,只是把传过去的数据加上了"回传"两个字 ...
- PHP学习笔记 - 进阶篇(11)
PHP学习笔记 - 进阶篇(11) 数据库操作 PHP支持哪些数据库 PHP通过安装相应的扩展来实现数据库操作,现代应用程序的设计离不开数据库的应用,当前主流的数据库有MsSQL,MySQL,Syba ...
- PHP学习笔记 - 进阶篇(10)
PHP学习笔记 - 进阶篇(10) 异常处理 抛出一个异常 从PHP5开始,PHP支持异常处理,异常处理是面向对象一个重要特性,PHP代码中的异常通过throw抛出,异常抛出之后,后面的代码将不会再被 ...
- PHP学习笔记 - 进阶篇(9)
PHP学习笔记 - 进阶篇(9) 图形图像操作 GD库简介 GD指的是Graphic Device,PHP的GD库是用来处理图形的扩展库,通过GD库提供的一系列API,可以对图像进行处理或者直接生成新 ...
- PHP学习笔记 - 进阶篇(8)
PHP学习笔记 - 进阶篇(8) 日期与时间 取得当前的Unix时间戳 UNIX 时间戳(英文叫做:timestamp)是 PHP 中关于时间与日期的一个很重要的概念,它表示从 1970年1月1日 0 ...
- PHP学习笔记 - 进阶篇(7)
PHP学习笔记 - 进阶篇(7) 文件操作 读取文件内容 PHP具有丰富的文件操作函数,最简单的读取文件的函数为file_get_contents,可以将整个文件全部读取到一个字符串中. $conte ...
- PHP学习笔记 - 进阶篇(6)
PHP学习笔记- 进阶篇(6) 会话控制(session与cookie) 当前的Cookie为: cookie简介 Cookie是存储在客户端浏览器中的数据,我们通过Cookie来跟踪与存储用户数据. ...
- PHP学习笔记 - 进阶篇(4)
PHP学习笔记 - 进阶篇(4) 字符串操作 字符串介绍 PHP开发中,我们遇到最多的可能就是字符串. 字符串变量用于包含字符串的值. 一个字符串 通过下面的3种方法来定义: 1.单引号 2.双引号 ...
- PHP学习笔记 - 进阶篇(5)
PHP学习笔记 - 进阶篇(5) 正则表达式 什么叫正则表达式 正则表达式是对字符串进行操作的一种逻辑公式,就是用一些特定的字符组合成一个规则字符串,称之为正则匹配模式. $p = '/apple/' ...
随机推荐
- vmware虚拟机上网:NAT搭建局域网
若是你不知道的情况下,可以编辑虚拟机网络配置,然后恢复默认,vmware会自动给你分配好ip,默认使用的是vmware8,下面的是使用默认的配置 看图 注意:子网的ip一定要在如上图所示的范围 适配器 ...
- 非阻塞io与记录锁
非阻塞io 1.对比 阻塞io的例子:scanf从终端获取输入时,如果不输入程序就会一直停在那; 对一个已经有写锁的文件请求读时, 会一直空等直到前面的进程释放锁... 非阻塞的例子:读取文件内容, ...
- 非常有用!eclipse与myeclipse恢复已删除的文件和代码
eclipse与myeclipse恢复已删除的文件和代码 今天写了1300多行代码,被不小心删除了顿时感觉手足无措,后来用myeclipse的历史文件恢复功能,找回来了,虚惊一场!!!MyEclip ...
- 使用IE浏览器下载时候窗口一闪而过
使用IE浏览器下载东西时,窗口一闪而过,那么这个问题怎么处理呢? 解决办法: 1.按住ctrl键进行下载 2.浏览器>工具>internet选项>安全自定义级别>下载文件自动提 ...
- 多实例MySQL批量添加用户和密码并授权
OS:Cent OS 6.3 DB:5.5.14 如果一台服务器上有100个MySQL数据库实例,此时需要给不同端口的几个数据库添加用户名.密码并授权应用IP,一个个授权没问题,反正累的不是我,哇咔咔 ...
- Python GUI编程实践
看完了<python编程实践>对Python的基本语法有了一定的了解,加上认识到python在图形用户界面和数据库支持方面快捷,遂决定动手实践一番. 因为是刚接触Python,对于基本的数 ...
- iOS VideoToolbox硬编H.265(HEVC)H.264(AVC):2 H264数据写入文件
本文档为iOS VideoToolbox硬编H.265(HEVC)H.264(AVC):1 概述续篇,主要描述: CMSampleBufferRef读取实际数据 序列参数集(Sequence Para ...
- Android journey3 @点击事件的4种写法
对于android布局中的控件,如Button等会有相应的点击事件去响应它所需要的功能,今天我们就以电话拨号器的代码说明下几种点击事件: package com.itheima.phone; impo ...
- c++ 如何实现,readonly
需求: 我要实现一个常量字段,只能赋值一次,赋值后不容许更改. 类似于c#的readonly或者java final #include <iostream> class A{public ...
- spoj 375 Query on a tree(树链剖分,线段树)
Query on a tree Time Limit: 851MS Memory Limit: 1572864KB 64bit IO Format: %lld & %llu Sub ...