12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- //
- // LBXScanLineAnimation.swift
- // swiftScan
- //
- // Created by lbxia on 15/12/9.
- // Copyright © 2015年 xialibing. All rights reserved.
- //
- import UIKit
- class LBXScanLineAnimation: UIImageView {
- var isAnimationing = false
- var animationRect = CGRect.zero
-
- func startAnimatingWithRect(animationRect: CGRect, parentView: UIView, image: UIImage?) {
- self.image = image
- self.animationRect = animationRect
- parentView.addSubview(self)
-
- isHidden = false
- isAnimationing = true
- if image != nil {
- stepAnimation()
- }
- }
-
- @objc func stepAnimation() {
- guard isAnimationing else {
- return
- }
- var frame = animationRect
- let hImg = image!.size.height * animationRect.size.width / image!.size.width
- frame.origin.y -= hImg
- frame.size.height = hImg
- self.frame = frame
- alpha = 0.0
- UIView.animate(withDuration: 1.4, animations: {
- self.alpha = 1.0
- var frame = self.animationRect
- let hImg = self.image!.size.height * self.animationRect.size.width / self.image!.size.width
- frame.origin.y += (frame.size.height - hImg)
- frame.size.height = hImg
- self.frame = frame
- }, completion: { _ in
- self.perform(#selector(LBXScanLineAnimation.stepAnimation), with: nil, afterDelay: 0.3)
- })
- }
-
- func stopStepAnimating() {
- isHidden = true
- isAnimationing = false
- }
-
- public static func instance() -> LBXScanLineAnimation {
- return LBXScanLineAnimation()
- }
-
- deinit {
- stopStepAnimating()
- }
- }
|