2013-08-01 8 views
5

ho messo indicatore di attività diCome mettere activityindicator centro di una Tableview

spinner.center = CGPointMake([UIScreen mainScreen].bounds.size.width/2,[UIScreen mainScreen].bounds.size.height/2); 
[self.view addSubview:spinner]; 

Ma questo non è correttamente centrato nella vista tabella. Perché la vista tabella può scorrere. Come posso mettere uno spinner al centro dello schermo.

+1

Si stanno facendo è centrato su schermo non di 'tableView'. Conterrà l'altezza ** ** di 'navigaitonBar' e' statusBar' anche. ** la visualizzazione della tabella può scorrere ** non ha alcun senso qui. – TheTiger

+0

Per Swift 3 è possibile utilizzare il seguente: Si prega di controllare la mia risposta in http://stackoverflow.com/a/41748916/2307418 –

risposta

9

provare con il codice di sotto: -

spinner.center = CGPointMake([UIScreen mainScreen].bounds.size.width/2,[UIScreen mainScreen].bounds.size.height/2); 
    yourAppdelegateClass *appDelegate = (yourAppdelegateClass*)[[UIApplication sharedApplication] delegate]; 
    [appDelegate.window addSubview:spinner]; 

Codice di uscita è: -

enter image description here

+0

UIActivityIndicatorView * spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle: UIActivityIndicatorViewStyleWhiteLarge]; spinner.center = CGPointMake ([UIScreen mainScreen] .bounds.size.width/2, [UIScreen mainScreen] .bounds.size.height/2); ; UIWindow * mainWindow = [[UIApplication sharedApplication] keyWindow]; [mainWindow addSubview: spinner]; Questo funziona per me. – Susitha

+1

bravo .. questa è la stessa cosa di UIWindow mainWindow = [[UIApplication sharedApplication] keyWindow]; e oggetto di appdelegate e ottieni la finestra come il mio codice ... :) –

4

Prova questo:

spinner.center = tableview.center; 

Speranza che aiuta !!

+1

Sarebbe molto più sicuro usare 'CGPointMake (CGRectGetMidX (self.bounds), CGRectGetMidY (self.bounds)) dato che il centro di 'tableview' sarà relativo alla sua superview e non a se stesso! – Warpling

1

Penso che dovresti aggiungere il tuo indicatore (Spinner) sulla vista tabella invece di sel.view. e definire la cornice dell'area sull'indicatore.

spero che questo ti possa aiutare.

1

ho un'altra soluzione, perché devo mettere un filatore a controller di vista di dettaglio. Forse aiuterà qualcuno.

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    self.spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; 
    self.spinner.hidesWhenStopped = YES; 
    [self.navigationController.view addSubview:self.spinner]; 
} 

E per il posizionamento:

-(void)viewDidLayoutSubviews 
{ 
    [super viewDidLayoutSubviews]; 
    [self.navigationController.view setNeedsLayout]; 
    [self.navigationController.view layoutIfNeeded]; 
    self.spinner.frame = CGRectMake(self.view.frame.size.width/2, self.view.frame.size.height/2, 10, 10); 
} 

Spinner sarà sempre al centro della vostra vista tavolo al controller di vista di dettaglio.

-1

Qui di seguito trovate il codice:

UIActivityIndicatorView* spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; 
spinner.center = CGPointMake([UIScreen mainScreen].bounds.size.width/2,[UIScreen mainScreen].bounds.size.height/2); 
AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; 
[spinner startAnimating]; 
[appDelegate.window addSubview:spinner];