活动指示器在执行时未显示
我试图在用户点击登录按钮时显示活动指示器。 如果我将startActivityIndicator()
代码放在viewDidLoad()
它将完全按预期显示在屏幕上。 当我执行它作为btnSignIn()
第一步时,它永远不会出现。 有点失落,所以我希望Stack大师可以帮助……
// Here are the variable declarations var activityIndicator: UIActivityIndicatorView = UIActivityIndicatorView() var loadingView: UIView = UIView() var viewCenter:CGPoint! @IBAction func btnSignIn(sender: AnyObject) { startActivityIndicator() if validateEmailAddress(txtEmailAddress.text!) == false { stopActivityIndicator(self.loadingView) return } if validatePassword(txtPassword.text!) == false { stopActivityIndicator(self.loadingView) return } PFUser.logInWithUsernameInBackground(txtEmailAddress.text!, password:txtPassword.text!) { (user: PFUser?, error: NSError?) -> Void in if user != nil { // Successful login. self.txtPassword.resignFirstResponder() self.txtEmailAddress.resignFirstResponder() self.getUserInfo() } else { self.stopActivityIndicator(self.loadingView) // The login failed. Display alert. self.displayAlert("Whoops!", message: "Email or Password are incorrect.") } } } func startActivityIndicator() { loadingView.frame = CGRectMake(0, 0, 80, 80) loadingView.center = viewCenter print(viewCenter) loadingView.backgroundColor = UIColorFromRGB("444444", alpha: 0.7) loadingView.clipsToBounds = true loadingView.layer.cornerRadius = 10 activityIndicator.frame = CGRectMake(0.0, 0.0, 40.0, 40.0); activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.WhiteLarge activityIndicator.center = CGPointMake(loadingView.frame.size.width / 2, loadingView.frame.size.height / 2); view.addSubview(loadingView) loadingView.addSubview(activityIndicator) UIApplication.sharedApplication().beginIgnoringInteractionEvents() activityIndicator.startAnimating() } func stopActivityIndicator(uiView: UIView) { activityIndicator.stopAnimating() loadingView.removeFromSuperview() UIApplication.sharedApplication().endIgnoringInteractionEvents() }
使用我的delay
实用程序(参见https://stackoverflow.com/a/24318861/341994 ),重写如下:
@IBAction func btnSignIn(sender: AnyObject) { startActivityIndicator() delay(0.1) { if validateEmailAddress(txtEmailAddress.text!) == false { // ... everything else goes here ... } }
延迟使活动指示器有机会出现并开始旋转。
- asynchronous加载 – UITableView和Firebase
- 我怎样才能分离应用程序ID和版本在ionic framework
- FPPopover不会popupbutton按下,只是NSLogs“FPPopoverController dealloc”
- CGImageCreateWithMaskingColors不适用于iOS7
- 如何在UINavigationBar中添加UISegmentedControl?
- 在Swift中将值从一个视图控制器传递给另一个视图控制器
- 缩放UIScrollView contentSize以适应具有可变高度的UITableView的UIView
- fork()失败(1:不允许操作)
- 在Swift中重复使用快照子项(Firebase)