import UIKit
import SDWebImage
class ViewController: UIViewController {
let widthScreen = UIScreen.main.bounds.width
let heightScreen = UIScreen.main.bounds.height
var aniImageView:UIImageView!
var mainImageView:UIImageView!
var isTap:Bool = false
override func viewDidLoad() {
super.viewDidLoad()
// 1,使用图像控件显示图片
let imageView = UIImageView(frame:CGRect(x:50, y:50, width:200, height:130))
imageView.image = UIImage.init(named: "可见")
self.view.addSubview(imageView)
self.mainImageView = imageView
//保持图片比例
//默认 UIImageView 会拉伸图片使其占满整个 UIImageView,如果不想让图片变形,可以将 ContentMode 设置为 Aspect Fit。
//设置拉伸模式 /* ScaleToFill: 填充模式,图片不会保持原来的比例 ScaleAspectFit: 图片保持原来的比例,宽度填充,高度自适应 ScaleAspectFill: 图片保持原来的比例,高度填充,宽度自适应 */ imageView.contentMode = UIViewContentMode.ScaleAspectFit
// imageView.contentMode = .scaleAspectFit
// 2,改变图片
imageView.image = UIImage.init(named: "pbg")
// 3,从文件目录中获取图片
let path = Bundle.main.path(forResource: "可见", ofType: "png")
let imageData = UIImage(contentsOfFile: path!)
let newImageVC = UIImageView(image: imageData)
newImageVC.frame = CGRect(x: 300, y: 50, width: 75, height: 50)
self.view.addSubview(newImageVC)
// 4,从网络地址获取图片
//定义URL对象
let url = URL(string: "http://ww2.sinaimg.cn/bmiddle/632dab64jw1ehgcjf2rd5j20ak07w767.jpg")
// //从网络获取数据流
let data = try! Data(contentsOf: url!)
//通过数据流初始化图片
let newImage = UIImage(data: data)
let imageView3 = UIImageView(image:newImage)
imageView3.frame = CGRect(x: 50, y: 500, width: 150, height: 100)
self.view.addSubview(imageView3)
// imageView.sd_setImage(with: NSURL(string: "http://ww2.sinaimg.cn/bmiddle/632dab64jw1ehgcjf2rd5j20ak07w767.jpg")! as URL)
// imageView.sd_setImage(with: NSURL(string: "http://ww2.sinaimg.cn/bmiddle/632dab64jw1ehgcjf2rd5j20ak07w767.jpg") as URL!)
// imageView.sd_setImage(with: (NSURL(string: "http://ww2.sinaimg.cn/bmiddle/632dab64jw1ehgcjf2rd5j20ak07w767.jpg")! as URL))
// imageView.sd_setImage(with: NSURL(string: "http://ww2.sinaimg.cn/bmiddle/632dab64jw1ehgcjf2rd5j20ak07w767.jpg") as URL?)
// let img = UIImage(data: data,scale:1.5); //在这里对图片显示进行比例缩放
// let vImg = UIImageView(image: img);
// vImg.frame.origin = CGPoint(x:20,y:40);
// //vImg.frame = CGRect(x:0,y:20,width:120,height:120);
// self.view.addSubview(vImg);
// 1)如果需要显示app自带的资源文件,可以直接使用UIImage的构造函数:named来直接拉取资源文件。
// 2)如果要显示本地或者网络资源文件,则需要使用NSData,来拉取对应文件的DATA,最后显示到UIImageView中去。
// 3)UIImage在构造时,scale的参数需要进一步理解。
// 4)如果文件尺寸未知的情况下,最好不要对其width和height进行限制。可使用UIView.frame.origin(CGPoint)来指定左上角坐标。同样,也可以单独指定UIView.frame.size来指定CGSize.
// 5)如果仅指定图像左上角坐标,但又想文件按比例缩放,可以使用vImg的contentMode属性枚举值
// 5,使用图像控件实现动画播放
// UIImageView 中提供了存储多张图片来创建动画的功能,具体做法是,在 animationImages 属性中设置一个图片数组,然后使用 startAnimating 方法开始动画,最后用 stopAnimating 方法停止动画。同时,使用 animationDuration 属性中可以设置动画每帧切换的速度(秒)。
self.aniImageView = UIImageView()
self.aniImageView.frame=CGRect(x:50, y:250, width:200, height:150)
// //设置动画图片
self.aniImageView.animationImages = [UIImage(named:"test1")!,UIImage(named:"test2")!,UIImage(named:"test3")!,UIImage(named:"可见")!,UIImage(named:"不可见")!]
// //设置每隔1秒变化一次
self.aniImageView.animationDuration=1
self.view.addSubview(self.aniImageView)
self.aniImageView.startAnimating()
// 6 UIImageView的用户交互默认是关闭的,也就是说添加到ImageView上的事件都不会响应,需要我们手动设置userInteractionEnabled属性为真,我们给UIImageVIew添加一个点击手势来测试一下,如果注释掉第一行,点击就会失去反应
imageView.isUserInteractionEnabled = true
let tap = UITapGestureRecognizer(target: self, action: #selector(tapAction(tap:)))
imageView.addGestureRecognizer(tap)
}
@objc func tapAction(tap:UITapGestureRecognizer){
let small = CGRect(x:50, y:50, width:200, height:130)
let big = CGRect(x: 0, y: 0, width: widthScreen, height: heightScreen)
// if isTap == true {
// print("小")
// isTap = false
// self.mainImageView.frame = small
// }else if isTap == false{
// print("大")
// isTap = true
// self.mainImageView.frame = big
// }
isTap = !isTap
self.mainImageView.frame = isTap ? big : small
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}