2015-12-04 4 views
0

Я пытаюсь сделать индикатор активности с фоном, который охватывает весь экран. Моя проблема в том, что когда я запускаю приложение, он охватывает только часть экрана. Я не уверен, что я делаю неправильно здесь.Индикатор активности для Swift, охватывающий только часть экрана

func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage, editingInfo: [String : AnyObject]?) { 
     self.dismissViewControllerAnimated(true) {() -> Void in 

      self.activityIndicator = UIActivityIndicatorView(frame: self.view.frame) 
      self.activityIndicator.backgroundColor = UIColor(white: 1.0, alpha: 0.5) 
      self.activityIndicator.center = self.view.center 
      self.activityIndicator.hidesWhenStopped = true 
      self.activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.Gray 
      self.view.addSubview(self.activityIndicator) 
      self.activityIndicator.startAnimating() 
      UIApplication.sharedApplication().beginIgnoringInteractionEvents() 

      print("save the data on to core data and onto Parse, then segue to the new input controller") 

      let file = PFFile(data: UIImageJPEGRepresentation(image, 1.0)!) 
      let insurance = PFObject(className: "Insurance") 

      insurance["userId"] = PFUser.currentUser()?.objectId 
      insurance["imageFile"] = file as PFFile 
      insurance.saveInBackgroundWithBlock({ (success, error) -> Void in 
       self.activityIndicator.stopAnimating() 
       UIApplication.sharedApplication().endIgnoringInteractionEvents() 
       if (success) { 
        self.performSegueWithIdentifier("segueToDetails", sender: self) 
       }else{ 
        self.displayAlert("Problems Savings", message: "There was an error with saving the data") 
       } 
      }) 
     } 
    } 

Display with the code above

Есть ли какие-нибудь предложения?

+0

Применить ограничения к нему как CenterX и столетие к супервизу –

ответ

1

Изменения эта линия

self.activityIndicator = UIActivityIndicatorView(frame: self.view.frame) 

в

self.activityIndicator = UIActivityIndicatorView(frame: self.view.bounds) 

Судя по скриншоту, рамка self.view нечто вроде (0, 64, /* some width */, /* some height */). Происхождение y составляет 64 точки вниз по экрану. Вы копируете этот фрейм и даете индикатору активности тот же фрейм. Это было бы, если бы вы добавляли индикатор активности в представление, чье y происходило в 0 точках. Поскольку представление, к которому вы добавили его, уже на 64 пункта вниз, добавление индикатора активности с этим фреймом сделает индикаторы активности реальными в плане экрана телефона на 128 пунктов вниз по экрану. Я получил этот номер от добавления источника y вида и y происхождения индикатора активности.

1

Что я сделал, чтобы решить эту проблему толкает индикатор нагрузки на верхний контроллер:

private var topMostController: UIViewController? { 
    var presentedVC = UIApplication.sharedApplication().keyWindow?.rootViewController 
    while let pVC = presentedVC?.presentedViewController { 
     presentedVC = pVC 
    } 

    return presentedVC 
} 

Вы можете попробовать это, проект рудника: https://github.com/goktugyil/EZLoadingActivity