[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.)