#15 swift animate 動畫練習(二)

Stephen Huang
Jul 5, 2021

在 viewWillAppear顯示第一張圖片,再設置function將第二張圖片顯示出來。


override func viewWillAppear(_ animated: Bool) {

let firstImageView = UIImageView(image: UIImage(named: "001"))
firstImageView.frame = view.frame
firstImageView.contentMode = .scaleAspectFill
view.addSubview(firstImageView)

imageFadeIn(imageView: firstImageView)
}


func imageFadeIn(imageView: UIImageView) {

let secondImageView = UIImageView(image: UIImage(named: "002"))
secondImageView.frame = view.frame
secondImageView.contentMode = .scaleAspectFill
secondImageView.alpha = 0.0

view.insertSubview(secondImageView, aboveSubview: imageView)

UIView.animate(withDuration: 2.0, delay: 2.0, options: .curveEaseOut) {
secondImageView.alpha = 1.0
} completion: { _ in
imageView.image = secondImageView.image
secondImageView.removeFromSuperview()
}
}

frame設定圖片邊界
contentMode設定圖片填滿方式
addSubview使UIImageView顯示在view上。

function裡,secondImageView一開始設為透明,
UIView的animate讓他變成非透明。

completion表示動畫完成後要做的事
這裡將function參數imageView設為secondImageView的圖片
(因為圖片並未變透明,不改變的話可能會出現第一張圖片)
也可以直接把firstImageView變透明
因為我們現在要直接移除他了(透過removeFromSuperview)

另外,通常用addSubview是直接一層一層的加上view
若用insertSubview則可以直接指定要增加在哪一層。

Photo by Alistair MacRobert on Unsplash

--

--