当前位置: 首页 > news >正文

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



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

相关文章:

  • 我有几个粽子,和一个故事
  • openstack dnsmasq彭祖
  • WSS与Project Server集成 - Chatterley - 博客园
  • mysql 5.6 原生Online DDL解析
  • 第二阶段个人总结11
  • HDU 2073 无限的路
  • kettle 数据迁移 (转)
  • 利用R语言进行交互数据可视化(转)
  • linq pad
  • learning python paramiko --one
  • 学习笔记之15道简单算法题
  • JS处理URL详解图
  • post插件
  • 改变从内部开始:开发者与管理者的协作
  • 【5+】跨webview多页面 触发事件(二)
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • Git同步原始仓库到Fork仓库中
  • HTTP中GET与POST的区别 99%的错误认识
  • iOS编译提示和导航提示
  • JavaScript设计模式之工厂模式
  • JS+CSS实现数字滚动
  • Node项目之评分系统(二)- 数据库设计
  • python学习笔记-类对象的信息
  • React Native移动开发实战-3-实现页面间的数据传递
  • Spring Cloud中负载均衡器概览
  • vue脚手架vue-cli
  • Vue全家桶实现一个Web App
  • 技术胖1-4季视频复习— (看视频笔记)
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 排序算法学习笔记
  • 树莓派 - 使用须知
  • 新手搭建网站的主要流程
  • 一道闭包题引发的思考
  • 阿里云服务器购买完整流程
  • 如何在招聘中考核.NET架构师
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (WSI分类)WSI分类文献小综述 2024
  • (二)c52学习之旅-简单了解单片机
  • (附源码)计算机毕业设计ssm电影分享网站
  • (四)Linux Shell编程——输入输出重定向
  • (转)EOS中账户、钱包和密钥的关系
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • .libPaths()设置包加载目录
  • .net Stream篇(六)
  • .net操作Excel出错解决
  • .net使用excel的cells对象没有value方法——学习.net的Excel工作表问题
  • @RestController注解的使用
  • [ vulhub漏洞复现篇 ] GhostScript 沙箱绕过(任意命令执行)漏洞CVE-2019-6116
  • [2021 蓝帽杯] One Pointer PHP
  • [Angular 基础] - 数据绑定(databinding)
  • [C#]猫叫人醒老鼠跑 C#的委托及事件
  • [C++]Leetcode17电话号码的字母组合