繁体   English   中英

如何在Swift的ViewDidAppear中运行循环?

[英]How to run a loop in ViewDidAppear in Swift?

我想在应用启动时交替显示一个蓝色和黑色矩形。 我写了这段代码。 它的编译很好,没有任何错误,但是没有结果。

import UIKit

class ViewController: UIViewController {

    var mybool = true

    override func viewDidAppear(_ animated: Bool) {


        while(mybool){
            let firstFrame = CGRect(x: 160, y: 240, width: 100, height: 150)
            let firstView = UIView(frame: firstFrame)
            firstView.backgroundColor = UIColor.blue
            view.addSubview(firstView)

            let secondView = UIView(frame: firstFrame)
            secondView.backgroundColor = UIColor.black
            view.addSubview(secondView)

        }
    }


}

谁能告诉我我要去哪里错了?

提前致谢

永远不要while等待属性在主线程上更改时运行! 这是整个UI所依赖的线程。 该应用程序看起来已经崩溃,iOS迟早会杀死它。

使用核心动画:

weak var loadingView: UIView!
override func viewDidLoad() {
    super.viewDidLoad()

    let frame = CGRect(x: 160, y: 240, width: 100, height: 150)
    let subview = UIView(frame: frame)
    subview.backgroundColor = .black
    self.view.addSubview(subview)

    UIView.animate(withDuration: 1, delay: 0, options: [.autoreverse, .repeat, .curveEaseInOut], animations: {
        subview.backgroundColor = .blue
    }, completion: nil)

    self.loadingView = subview
}

当您要停止动画时(例如,加载完成时):

func stopAnimation() {
    loadingView.layer.removeAllAnimations()
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM