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

文/ljcoder(简书作者)
原文链接:http://www.jianshu.com/p/f7fca80a7235
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

转载于:https://www.cnblogs.com/wanghuaijun/p/5553067.html

swift学习笔记-UI篇之UIImageView相关推荐

  1. 【swift学习笔记】二.页面转跳数据回传

    上一篇我们介绍了页面转跳:[swift学习笔记]一.页面转跳的条件判断和传值 这一篇说一下如何把数据回传回父页面,如下图所示,这个例子很简单,只是把传过去的数据加上了"回传"两个字 ...

  2. R语言学习笔记——高级篇:第十四章-主成分分析和因子分析

    R语言 R语言学习笔记--高级篇:第十四章-主成分分析和因子分析 文章目录 R语言 前言 一.R中的主成分和因子分析 二.主成分分析 2.1.判断主成分的个数 2.2.提取主成分 2.3.主成分旋转 ...

  3. C4D R26 渲染学习笔记 建模篇(3):生成器

    文章目录 前文回顾 介绍篇 建模篇 生成器介绍 生成器 变形器 搭配举例 生成器详细介绍 细分曲面 布料曲面 挤压 基本挤压模型 对象参数修改 封盖参数修改 曲线封盖参数 旋转 对象参数修改 封盖 复 ...

  4. C4D R26 渲染学习笔记 建模篇(2):手动建模

    文章目录 前文回顾 介绍篇 建模篇 手动建模 建模快捷键 手动模型快捷键大全 常用操作 N系快捷键 K系快捷键 U系快捷键 结尾 前文回顾 介绍篇 C4D R26 渲染学习笔记(1):C4D版本选择和 ...

  5. C4D R26 渲染学习笔记 建模篇(1):参数模型

    往期文章 介绍篇 C4D R26 渲染学习笔记(1):C4D版本选择和初始UI框介绍 C4D R26 渲染学习笔记(2):渲染流程介绍 C4D R26 渲染学习笔记(3):物体基本操作+快捷键 建模篇 ...

  6. [mmu/cache]-ARM MMU的学习笔记-一篇就够了

    ★★★ 个人博客导读首页-点击此处 ★★★ . 说明: 在默认情况下,本文讲述的都是ARMV8-aarch64架构,linux kernel 64位 . 相关文章 1.ARM cache的学习笔记-一 ...

  7. [mmu/cache]-ARM cache的学习笔记-一篇就够了

    ★★★ 个人博客导读首页-点击此处 ★★★ . 说明: 在默认情况下,本文讲述的都是ARMV8-aarch64架构,linux kernel 64位 . 相关文章 1.ARM MMU的学习笔记-一篇就 ...

  8. Vue学习笔记进阶篇——Render函数

    本文为转载,原文:Vue学习笔记进阶篇--Render函数 基础 Vue 推荐在绝大多数情况下使用 template 来创建你的 HTML.然而在一些场景中,你真的需要 JavaScript 的完全编 ...

  9. PHP学习笔记 - 进阶篇(7)

    PHP学习笔记 - 进阶篇(7) 文件操作 读取文件内容 PHP具有丰富的文件操作函数,最简单的读取文件的函数为file_get_contents,可以将整个文件全部读取到一个字符串中. $conte ...

最新文章

  1. 部署P2P扩容的脚本
  2. mustache模板技术
  3. Tensorboard—使用keras结合Tensorboard可视化
  4. |洛谷|动态规划|P1164 小A点菜
  5. 2 android学习资料
  6. mysql命令教学_mysql常用命令有什么
  7. 中有atoi函数吗_C++ 多态的实现及原理,深挖vptr指针,手动调用虚函数
  8. 玛酷机器人与艾迪瑞特_加盟玛酷机器人和艾克瑞特机器人哪个好
  9. php password_hash和password_verify
  10. 物联网常用无线模块 接收灵敏度及发射功率简化测量方法
  11. 吊打面试官的硬核法宝~阿里架构师最新总结软件测试面试宝典
  12. 听YunOS“教父”王坚怎么说
  13. java mediator模式_设计模式之Mediator 中介者模式 - 解道Jdon
  14. Spring 之 @Cacheable 源码解析(上)
  15. 如何创建一个uniapp项目,如何运行手机上,打包等,更换头部,底部图标等。一目了然,
  16. TOR交换机和普通交换机有什么区别?
  17. 实施MES系统的成功率只有50%,你知道为什么吗?
  18. 服务器显示器白屏,电脑显示器白屏的原因以及处理方法
  19. [NSSCTF][SCTF 2021]WEB复现
  20. 视频教程-Kali Linux渗透测试基础入门到进阶实战全程课-渗透测试

热门文章

  1. python获取天气信息写入原有的excel文档
  2. 从原理上搞懂如何设置线程池参数大小?
  3. 说实话,你工作5年,不知道什么是Java agent技术,让我很吃惊...
  4. Spring Boot Starters启动器
  5. Java:main()函数调用类中方法的限制
  6. js html转图片 ie8,用js滤镜实现在IE8-的图片旋转效果实现不了
  7. python构建知识库_手把手教导实战Python Web项目
  8. 浅析数据中心电气系统检测与认证
  9. 第一部分:数据中心专业名词你知道多少?
  10. 对一次短路故障的分析与总结