zoukankan      html  css  js  c++  java
  • 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
    著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
  • 相关阅读:
    args4 1.4.12 编写一个程序,有序打印给定的两个有序数组(含有N 个int 值)中的所有公共元素,程序在最坏情况下所需的运行时间应该和N 成正比。
    优化斐波那契数列递归的计算
    Java中BO、DAO、DO、DTO、PO、POJO、VO的概念
    并查集算法Union-Find的思想、实现以及应用
    计算机网络中一些比较重要的概念
    [转]架构初探之架构的几种设计模式
    常见排序算法的思想以及稳定性分析
    数据库基础知识整理与复习总结
    Java面试之Java集合相关问题答案口述整理
    Java面试之Java基础问题答案口述整理
  • 原文地址:https://www.cnblogs.com/wanghuaijun/p/5553067.html
Copyright © 2011-2022 走看看