2015-08-07 4 views
0

У меня есть ActivityIndicator для моего входа в систему fuction, но когда я поворачиваю свое устройство, моя активностьIndicator не изменяется. это мой код моей функции входа, я называю это.My activityIndicator не меняет размер

@IBAction func login(sender: AnyObject) { 
    var valid: Bool = false 
    self.viewUtils.showActivityIndicator(self.view) 
    username = userField.text.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()) 
    password = passwordTextField.text.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()) 


     if (self.username.isEmpty || self.password.isEmpty){ 
      self.showAlert("Inserte usuario password") 
     } 
     else{ 

      var user = UserFunction() 
      dispatch_async(dispatch_get_global_queue(QOS_CLASS_USER_INITIATED, 0)){ 
       valid = user.userValid(self.username,password: self.password) 

       dispatch_async(dispatch_get_main_queue()){ 
        if valid { 
         self.performSegueWithIdentifier("showTable", sender: self)} 
        else{ 
        self.showAlert("usuario incorrecto") 

        } 


       } 
      } 
    } 
} 

и это мой код моего showactivity:

func showActivityIndicator(uiView: UIView){ 
    container.frame = uiView.frame 
    container.center = uiView.center 
    container.backgroundColor = UIColorFromHex(0xffffff, alpha: 0.3) 

    loadingView.frame = CGRectMake(0, 0, 80, 80) 
    activityIndicator.autoresizingMask = UIViewAutoresizing.FlexibleTopMargin | UIViewAutoresizing.FlexibleTopMargin | UIViewAutoresizing.FlexibleLeftMargin | UIViewAutoresizing.FlexibleRightMargin 
    loadingView.center = uiView.center 
    loadingView.backgroundColor = UIColorFromHex(0x444444, 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); 

    loadingView.addSubview(activityIndicator) 
    container.addSubview(loadingView) 
    uiView.addSubview(container) 

    activityIndicator.startAnimating() 

} 

enter image description here

+0

Из любопытства, вы используете Раскадровка, чтобы загрузить ваш взгляд, или Вы добавляете 'NSLayoutConstraint' программно? – SwiftArchitect

+0

проблема в том, что у меня нет ограничений: S –

+0

Я думаю, что оба ответа подсказывают, что вы используете 'NSLayoutContraint' ... – SwiftArchitect

ответ

0

Так как вы написали выше фрагмент кода без NSLayoutConstraint, кратчайшее решение будет реагировать на:

- viewWillTransitionToSize:withTransitionCoordinator 

Раскадровка Решение

Более элегантное решение заключается в использовании Storyboard + Autolayout и ровно 3 строки кода, 1 является необязательным:

func showActivityIndicator(uiView: UIView){ 
    self.view.bringSubviewToFront(loadingView); // Only if covered 
    loadingView.hidden = false 
    activityIndicator.startAnimating() 
} 

enter image description here

Вы можете перемещать круглые углы, цвета и больше до -viewDidLoad.

loadingView.clipsToBounds = true 
loadingView.layer.cornerRadius = 10 
0

Определить ограничения макета для вас activityIndicator таким образом:

activityIndicator.translatesAutoresizingMaskIntoConstraints = NO;  
[activityIndicator addConstraint:[NSLayoutConstraint constraintWithItem: activityIndicator 
           attribute:NSLayoutAttributeCenterX 
           relatedBy:NSLayoutRelationEqual 
            toItem: container 
           attribute:NSLayoutAttributeCenterX 
           multiplier:1.f constant:0.f]]]; 

[activityIndicator addConstraint:[NSLayoutConstraint constraintWithItem: activityIndicator 
          attribute:NSLayoutAttributeCenterY 
          relatedBy:NSLayoutRelationEqual 
           toItem: container 
          attribute:NSLayoutAttributeCenterY 
          multiplier:1.f constant:0.f]]];