5.6、UIImageView

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.
}

}

你可能感兴趣的:(5.6、UIImageView)