#15 swift animate 動畫練習(二)
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則可以直接指定要增加在哪一層。