首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Xcode-图像视图不变

Xcode-图像视图不变
EN

Stack Overflow用户
提问于 2020-06-03 13:12:25
回答 1查看 48关注 0票数 0

我正在尝试使用for循环更新UIImageView,但是,图像只在循环的最后一次迭代中出现。该代码旨在显示一个二维码,等待4秒,然后显示另一个二维码,但它只显示最后一个二维码。

代码语言:javascript
运行
复制
            for record in 1...importedrecords.count-3 {
            let qrCode = importedrecords[record][0] + " " + importedrecords[record][1] + " " + importedrecords[record][7]
            print("QR Code is: " + qrCode)

            let data = qrCode.data(using: .ascii, allowLossyConversion: false)
            let filter = CIFilter(name: "CIQRCodeGenerator")
            filter?.setValue(data, forKey: "InputMessage")

            let ciImage = filter?.outputImage

            let transform = CGAffineTransform(scaleX: 10, y: 10)
            let transformImage = ciImage?.transformed(by: transform)

            let image = UIImage(ciImage: transformImage!)
            self.myImageView.image = image

            do {
                sleep(4)
            }
        }
EN

回答 1

Stack Overflow用户

发布于 2020-06-03 14:21:14

为此,我建议使用Timer。不建议使用sleep,尤其是在主线程上,因为它会停止线程上正在执行的所有工作。

代码语言:javascript
运行
复制
    var timer: Timer?
    var recordIndex = 0
    var importedRecords = [[String]]()

    // Call this when you want to start updating
    func startUpdate() {
        timer = Timer.scheduledTimer(timeInterval: 4, target: self, selector:#selector(updateQR), userInfo: nil, repeats: true)
    }

    // Call this when you want to stop and reset updating
    func stopUpdate() {
        timer?.invalidate()
        recordIndex = 0
    }

    @objc
    func updateQR() {
        let qrCode = importedRecords[recordIndex][0] + " " + importedRecords[recordIndex][1] + " " + importedRecords[recordIndex][7]
        print("QR Code is: " + qrCode)

        let data = qrCode.data(using: .ascii, allowLossyConversion: false)
        let filter = CIFilter(name: "CIQRCodeGenerator")
        filter?.setValue(data, forKey: "InputMessage")

        let ciImage = filter?.outputImage
        let transform = CGAffineTransform(scaleX: 10, y: 10)
        let transformImage = ciImage?.transformed(by: transform)

        let image = UIImage(ciImage: transformImage!)
        myImageView.image = image

        // This will prevent out of bounds crash
        if recordIndex < importedRecords.count {
            recordIndex += 1
        } else {
            stopUpdate()
        }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62165632

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档