无法显示 UIActivityIndi​​catorView

时间:2021-07-11 04:24:53

标签: swift objective-c uiactivityindicatorview

我遇到一个问题。我正在使用以下代码来显示 UIActivityIndi​​catorView。我的要求是能够创建一个 UIActivityIndi​​catorView 并在我单击带有标记 1 的按钮时显示它,如果我单击其他按钮,UIActivityIndi​​catorView 将从超级视图中删除。

class ViewController: UIViewController {
 lazy var acLoad:(UIActivityIndicatorView) = {
        let myActivityIndicator = UIActivityIndicatorView(style: UIActivityIndicatorView.Style.white)
        myActivityIndicator.center = view.center
        myActivityIndicator.hidesWhenStopped = true
        myActivityIndicator.startAnimating()
        return myActivityIndicator
    }()
    //more code
    @objc func btnAction(sender: UIButton){
        switch sender.tag {
        case 1:
            print("created")
            view.addSubview(acLoad)
            acLoad.startAnimating()
        default:
            print("removed")
            acLoad.stopAnimating()
            acLoad.removeFromSuperview()
        }
    }
}

以上不行,点击后可以得到打印日志,但是UIActivityIndi​​catorView不显示,有什么办法吗?

1 个答案:

答案 0 :(得分:0)

您的 UIActivityIndicatorView 似乎放错了位置(错误的帧值) - 因此您看不到它。

print("created")
view.addSubview(acLoad)
acLoad.startAnimating()

// Add this line in your button tap code
// It will tell you where it is placed inside your view
print(acLoad.frame)

如果您发现它的框架不是您想要的位置,只需修复您的布局代码,它就会在您期望的位置。

另一个注意事项 - myActivityIndicator.hidesWhenStopped = true 使其在 stopAnimating() 调用时自动隐藏。所以你只能添加一次,而不是每次都删除添加。

还要检查您的 view.backgroundColoracLoad 风格。