stopAnimating删除当前图像

问题描述 投票:0回答:1

一位退休的DEC PDP 8装配程序员需要另一套眼睛。我创建了一个显示该系列图像的Hello World程序。动画工作正常,但我希望用户能够停止动画,所以我添加了一个“暂停”图像的按钮,以便用户可以在闲暇时查看它。但是,.stopAnimation函数会清除视图。如何防止这种情况。请善待。

import UIKit

class FamilyUnitController: UIViewController {
    @IBOutlet weak var familyMember: UILabel!
    @IBOutlet weak var familyPhotos: UIImageView!
    var familyName: String = ""
    var familyUnitArray = [String]()

    @IBOutlet weak var pauseButton: UIButton!
    override func viewDidLoad() {
        super.viewDidLoad()
enter code here
        configureImageView()
    }

    @IBAction func pauseImage(_ sender: UIButton) {
        if familyPhotos.isAnimating {
            familyPhotos.stopAnimating()
            pauseButton.setTitle("Paused", for: [])
        } else {
            familyPhotos.startAnimating()
            pauseButton.setTitle("Pause", for: [])
        }
    }

    func configureImageView() {

        familyMember.text = familyUnitArray[0]
        familyMember.sizeToFit()
        let imagePrefix = familyUnitArray[1]
        print ("configureImageView called...")
        let maxImageCnt = 10
        if let imageView = familyPhotos {
            print ("Processing images...")
            let fileManager = FileManager.default
            let path = Bundle.main.resourcePath!
            print (#function,">Path> ",path)
            let enumerator:FileManager.DirectoryEnumerator = fileManager.enumerator(atPath: path)!
            var imageArr = [UIImage]()
            var imageCnt: Int = 0
            while let element = enumerator.nextObject() as? String {
                print (#function,"> element.description",element.debugDescription)
                let tmpStr = element.lowercased()
                let tmpImagePrefix = imagePrefix.lowercased()
                if (element.hasSuffix("png") || element.hasSuffix("jpg") || element.hasSuffix("jpeg"))
                        && tmpStr.hasPrefix(tmpImagePrefix)
                        && imageCnt < maxImageCnt {
                    let elementWithPath = path+"/"+element
                    imageArr.append(UIImage(contentsOfFile: elementWithPath)!)
                    imageCnt += 1
                }
            }
            imageView.isUserInteractionEnabled = true
            imageView.animationImages = imageArr
            imageView.contentMode = .scaleAspectFit
            imageView.backgroundColor = UIColor.white
            imageView.animationDuration = 15
            imageView.startAnimating()
        }
    }
}
swift animation uiimageview
1个回答
0
投票

你可以在这里指的是暂停动画/不停止动画。

Is there a way to pause a CABasicAnimation?

在您的情况下,代码应如下所示,您可能需要更改一点以使其完美。

@IBAction func pauseImage(_ sender: UIButton) {
    if  familyPhotos.layer.speed != 0 {

    let time   =  familyPhotos.layer.convertTime(CACurrentMediaTime(), to: nil)

        familyPhotos.layer.speed = 0
        familyPhotos.layer.timeOffset  = time
        pauseButton.setTitle("Paused", for: [])
    } else {

       familyPhotos.layer.beginTime =  familyPhotos.layer.timeOffset - CACurrentMediaTime()
        familyPhotos.layer.timeOffset = 0
        familyPhotos.layer.speed = 1
        pauseButton.setTitle("Pause", for: [])
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.