swift UIActivityIndi​​catorView .hidden = false无效

4 uiactivityindicatorview swift xcode6 xcode6-beta7

我按一下按钮就会显示一个活动指示器视图,但它不想显示.如果我没有将它设置为隐藏,它会显示,当我尝试隐藏它时,它会隐藏.但如果它被隐藏,它将不再显示.

这是代码:

override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.
    loading.hidden = true
}

@IBAction func submit() {
    loading.hidden = false
    loading.startAnimating()
    if chosenCategory == "" || txtName.text == "" || txtEmail.text == ""    {
        loading.stopAnimating()
        loading.hidden = true
    } else {
        println("animation")
Run Code Online (Sandbox Code Playgroud)

无论如何,停止动画都有效,它可以隐藏,但无论我做什么,它似乎都跳过了loading.hidden = false直接打印消息.

可能会发生什么?

Dan*_*oss 14

我建议不要使用.hidden属性.请改用.hidesWhenStopped属性并将其设置为true.然后只需调用.startAnimating()方法,UIActivityIndi​​catorView将自动变为可见并将进行动画制作.调用.stopAnimating()方法,UIActivityIndi​​catorView将自动隐藏.

override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.
    loading.hidesWhenStopped = true //this is all you need to change
}

@IBAction func submit() {
    loading.startAnimating() // becomes visible
    if chosenCategory == "" || txtName.text == "" || txtEmail.text == ""    {
        loading.stopAnimating() // goes into hiding
    } else {
        println("animation")
Run Code Online (Sandbox Code Playgroud)

  • 这实际上是正确答案,`hidden`property根本不适用于`UIActivityIndi​​catorView`.我很沮丧,人们在这里回答问题,甚至没有测试过手头的问题. (3认同)

zis*_*oft 6

使用GCD(Grand Central Dispatch)例程:

    self.activityIndicator.startAnimating()
    self.activityIndicator.hidden = false

    dispatch_after(DISPATCH_TIME_NOW, dispatch_get_main_queue(), { ()->() in
        ... // your long running code here

        self.activityIndicator.stopAnimating()
    })
Run Code Online (Sandbox Code Playgroud)