Swift - 图像控件(UIImageView)的用法
作者:hangge | 2015-01-16 14:57
(本文代码已升级至Swift3)
1,使用图像控件显示图片
2,改变图片
3,从文件目录中获取图片
4,从网络地址获取图片
5,使用图像控件实现动画播放
UIImageView 中提供了存储多张图片来创建动画的功能,具体做法是,在 animationImages 属性中设置一个图片数组,然后使用 startAnimating 方法开始动画,最后用 stopAnimating 方法停止动画。同时,使用 animationDuration 属性中可以设置动画每帧切换的速度(秒)。
6,保持图片比例
1,使用图像控件显示图片
let imageView = UIImageView(image:UIImage(named:"image1")) imageView.frame = CGRect(x:10, y:30, width:300, height:150) self.view.addSubview(imageView)
2,改变图片
imageView.image = UIImage(named:"icon2")
3,从文件目录中获取图片
let path = Bundle.main.path(forResource: "ball", ofType: "png") let newImage = UIImage(contentsOfFile: path!) let imageView = UIImageView(image:newImage) self.view.addSubview(imageView)
4,从网络地址获取图片
//定义URL对象 let url = URL(string: "http://hangge.com/blog/images/logo.png") //从网络获取数据流 let data = try! Data(contentsOf: url!) //通过数据流初始化图片 let newImage = UIImage(data: data) let imageView = UIImageView(image:newImage); self.view.addSubview(imageView)
5,使用图像控件实现动画播放
UIImageView 中提供了存储多张图片来创建动画的功能,具体做法是,在 animationImages 属性中设置一个图片数组,然后使用 startAnimating 方法开始动画,最后用 stopAnimating 方法停止动画。同时,使用 animationDuration 属性中可以设置动画每帧切换的速度(秒)。
import UIKit
class ViewController: UIViewController {
var imageView:UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
imageView = UIImageView()
imageView.frame=CGRect(x:20, y:20, width:100, height:100)
//设置动画图片
imageView.animationImages = [UIImage(named:"icon1")!,UIImage(named:"icon2")!]
//设置每隔0.5秒变化一次
imageView.animationDuration=0.5
self.view.addSubview(imageView)
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
imageView.startAnimating()
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillAppear(animated)
imageView.stopAnimating()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
6,保持图片比例
默认 UIImageView 会拉伸图片使其占满整个 UIImageView,如果不想让图片变形,可以将 ContentMode 设置为 Aspect Fit。
imageView.contentMode = .scaleAspectFit
全部评论(4)
设置了imageView.contentMode = .ScaleAspectFit之后,
图片如果小于imageView的话,会被拉伸。这种情况怎么解决?
站长回复:你可以比较下图片与imageView的尺寸大小,如果图片小于imageView的话,就用.Center。图片更大的话用.ScaleAspectFit
航哥,从网络地址获取图片,data值确实是nil,图片能打开,从百度上找的图片,是https的,请教下?
站长回复:首先确定下你info.xml中配置已经添加了。然后是不管什么网站图片都是nil,还是只是某些地址的图片得到的是nil。因为有种可能就是这个网站的图片添加了防盗链功能,阻止外部程序抓取图片。
为什么从网络地址获取图片 data的值为nil 。。新学这个不懂?请教航哥
站长回复:你先在浏览器里面访问下这个图片地址试试。如果这个网络地址确定没问题的话,肯定是可以得到图片的data值的。
第5的第10行在Xcode7编译有问题,不能转换 ,把后面的as [AnyObject]
去掉才能成功
站长回复:感谢提醒,已修改。