ios - 以编程方式用事件指示器替换 View

标签 ios swift uiview uiactivityindicatorview

我一直在尝试创建一种快速方法,允许我在进程开始之前用微调器替换任何 UIView,并在我的进程完成后重新显示 View 。出于某种原因,UIView 确实消失了,但微调器从未显示。这些是有问题的方法:

func showLoader(view: UIView, controller: UIViewController) -> UIActivityIndicatorView {

    let spinner = UIActivityIndicatorView(activityIndicatorStyle: .gray)
    spinner.color = AC_BLUE
    spinner.center = view.center
    spinner.startAnimating()

    view.alpha = 0
    controller.view.addSubview(spinner)

    return spinner
}

func hideLoader(view: UIView, spinner: UIActivityIndicatorView) {

    view.alpha = 1
    spinner.removeFromSuperview()

}

..我用这样的方式调用:

let spinner = Extensions().showLoader(view: signInBtn, controller: self)

APICalls().getUser(email: usernameTextField.text!, pass: passwordTextField.text!) { success, user in

     //..CODE..//
     Extensions().hideLoader(view: self.signInBtn, spinner: spinner)

}

此外,我尝试以主 VC View 为中心,这确实有效。所以我猜它一定与 View 的位置有关。

谢谢!

最佳答案

尝试在将微调器添加到 Controller View 之前设置它(而不是旧的 spinner.center = view.center):

spinner.center = view.superview!.convert(view.center, to: controller.view)

您需要将viewcenter转换为controller.view的坐标。

关于ios - 以编程方式用事件指示器替换 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46058421/

相关文章:

ios - 连续复制与一次性复制的成本(使用 TouchDB 和 Cloudant)

ios - 是否有一种(合法的)方法可以在 iOS 下捕获整个屏幕?

ios - 以编程方式将 UIControl 添加到导航栏的标题中 - Swift

swift - 监控 OS X 上的应用程序切换

iphone - 如何检测 UIView 大小何时改变?

objective-c - 向下钻取应用程序中的主页按钮

ios - SKAction以顺时针方向跟随Circle CGPathRef

ios - 查找存储启动图像的位置

ios - 单击按钮时快速创建角度,但方向相反

iphone - iPhone SDK 中的自动调整大小如何工作?