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
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
转载于:https://www.cnblogs.com/wanghuaijun/p/5553067.html
swift学习笔记-UI篇之UIImageView相关推荐
- 【swift学习笔记】二.页面转跳数据回传
上一篇我们介绍了页面转跳:[swift学习笔记]一.页面转跳的条件判断和传值 这一篇说一下如何把数据回传回父页面,如下图所示,这个例子很简单,只是把传过去的数据加上了"回传"两个字 ...
- R语言学习笔记——高级篇:第十四章-主成分分析和因子分析
R语言 R语言学习笔记--高级篇:第十四章-主成分分析和因子分析 文章目录 R语言 前言 一.R中的主成分和因子分析 二.主成分分析 2.1.判断主成分的个数 2.2.提取主成分 2.3.主成分旋转 ...
- C4D R26 渲染学习笔记 建模篇(3):生成器
文章目录 前文回顾 介绍篇 建模篇 生成器介绍 生成器 变形器 搭配举例 生成器详细介绍 细分曲面 布料曲面 挤压 基本挤压模型 对象参数修改 封盖参数修改 曲线封盖参数 旋转 对象参数修改 封盖 复 ...
- C4D R26 渲染学习笔记 建模篇(2):手动建模
文章目录 前文回顾 介绍篇 建模篇 手动建模 建模快捷键 手动模型快捷键大全 常用操作 N系快捷键 K系快捷键 U系快捷键 结尾 前文回顾 介绍篇 C4D R26 渲染学习笔记(1):C4D版本选择和 ...
- C4D R26 渲染学习笔记 建模篇(1):参数模型
往期文章 介绍篇 C4D R26 渲染学习笔记(1):C4D版本选择和初始UI框介绍 C4D R26 渲染学习笔记(2):渲染流程介绍 C4D R26 渲染学习笔记(3):物体基本操作+快捷键 建模篇 ...
- [mmu/cache]-ARM MMU的学习笔记-一篇就够了
★★★ 个人博客导读首页-点击此处 ★★★ . 说明: 在默认情况下,本文讲述的都是ARMV8-aarch64架构,linux kernel 64位 . 相关文章 1.ARM cache的学习笔记-一 ...
- [mmu/cache]-ARM cache的学习笔记-一篇就够了
★★★ 个人博客导读首页-点击此处 ★★★ . 说明: 在默认情况下,本文讲述的都是ARMV8-aarch64架构,linux kernel 64位 . 相关文章 1.ARM MMU的学习笔记-一篇就 ...
- Vue学习笔记进阶篇——Render函数
本文为转载,原文:Vue学习笔记进阶篇--Render函数 基础 Vue 推荐在绝大多数情况下使用 template 来创建你的 HTML.然而在一些场景中,你真的需要 JavaScript 的完全编 ...
- PHP学习笔记 - 进阶篇(7)
PHP学习笔记 - 进阶篇(7) 文件操作 读取文件内容 PHP具有丰富的文件操作函数,最简单的读取文件的函数为file_get_contents,可以将整个文件全部读取到一个字符串中. $conte ...
最新文章
- 部署P2P扩容的脚本
- mustache模板技术
- Tensorboard—使用keras结合Tensorboard可视化
- |洛谷|动态规划|P1164 小A点菜
- 2 android学习资料
- mysql命令教学_mysql常用命令有什么
- 中有atoi函数吗_C++ 多态的实现及原理,深挖vptr指针,手动调用虚函数
- 玛酷机器人与艾迪瑞特_加盟玛酷机器人和艾克瑞特机器人哪个好
- php password_hash和password_verify
- 物联网常用无线模块 接收灵敏度及发射功率简化测量方法
- 吊打面试官的硬核法宝~阿里架构师最新总结软件测试面试宝典
- 听YunOS“教父”王坚怎么说
- java mediator模式_设计模式之Mediator 中介者模式 - 解道Jdon
- Spring 之 @Cacheable 源码解析(上)
- 如何创建一个uniapp项目,如何运行手机上,打包等,更换头部,底部图标等。一目了然,
- TOR交换机和普通交换机有什么区别?
- 实施MES系统的成功率只有50%,你知道为什么吗?
- 服务器显示器白屏,电脑显示器白屏的原因以及处理方法
- [NSSCTF][SCTF 2021]WEB复现
- 视频教程-Kali Linux渗透测试基础入门到进阶实战全程课-渗透测试