[iOS] UIImageView에서 교차 송전 같은 애니메이션을 실현하고 싶어요.
다모창가 엔지니어
이번에는 교차 송전 애니메이션을 만들어야 한다는 통보를 받아 실현을 시도했다.
교차 피드백으로 여러 이미지 표시
실행 예
이런 느낌.
문제.
animationImages
를 사용할 수 있지만 피드도 안 돼요해결책
실현해 보았다
CrossFade.swift
import Foundation
import UIKit
class CrossFadeView: UIView {
var animationView: UIImageView!
var countNum = 0
var images: Array<UIImage> = []
var timer: NSTimer?
override init(frame: CGRect) {
super.init(frame: frame)
animationView = UIImageView.init(frame: frame)
self.addSubview(animationView)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func startCrossFade(duration: Float) {
timer = NSTimer.scheduledTimerWithTimeInterval(NSTimeInterval.init(duration), target: self, selector: Selector("crossFade"), userInfo: nil, repeats: true)
}
func stopCrossFade() {
if timer?.valid == true {
timer?.invalidate()
}
timer = nil
}
func addImage(image: UIImage) {
images.append(image)
}
func crossFade() {
guard images.count > 0 else {
return
}
let nextImage = images[countNum % images.count]
let trans = CATransition.init()
trans.duration = 1.0
trans.type = kCATransitionFade
animationView.layer.addAnimation(trans, forKey: nil)
animationView.image = nextImage
countNum++
}
}
소환자
import UIKit
class ViewController: UIViewController {
var crossFadeView: CrossFadeView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
crossFadeView = CrossFadeView.init(frame: CGRectMake(40, 100, 200, 200))
crossFadeView.addImage(UIImage(named: "sample1")!)
crossFadeView.addImage(UIImage(named: "sample2")!)
self.view.addSubview(crossFadeView)
}
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
crossFadeView.startCrossFade(2.0)
}
override func viewWillDisappear(animated: Bool) {
super.viewWillDisappear(animated)
crossFadeView.stopCrossFade()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
미리 교차 피드백을 위한 이미지 배열 관리
표시하고 싶은 이미지를 Array로 관리하면 편해요.
2015/ 11/18追記
그림의 크기가 커서 그룹에 추가하는 것을 주의해야 합니다.대량의 메모리를 점용하다.
Timer로 반복 전송
일정한 간격의 함수를 호출할 때 NSTimer의
scheduledTimerWithTimeInterval
는 매우 편리하다애니메이션 채널
CATransition
Fade 애니메이션이 준비되어 있어 편리함총결산
편리합니다!최고!
Reference
이 문제에 관하여([iOS] UIImageView에서 교차 송전 같은 애니메이션을 실현하고 싶어요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kiy0p0n/items/a888f5c46e9e8f08664d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)