问题描述
我遇到一个问题。我正在使用以下代码来显示 UIActivityIndicatorView。我的要求是能够创建一个 UIActivityIndicatorView 并在我单击带有标记 1 的按钮时显示它,如果我单击其他按钮,UIActivityIndicatorView 将从超级视图中删除。
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()
}
}
}
以上不行,点击后可以得到打印日志,但是UIActivityIndicatorView不显示,有什么办法吗?
解决方法
您的 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.backgroundColor
与 acLoad
风格。