2013-10-21 13 views
13

Io uso un UIRefreshControl simile (senza UITableViewController):Dare un margine superiore al UIRefreshControl

UIRefreshControl *refreshControl = [UIRefreshControl new]; 
[refreshControl addTarget:self action:@selector(viewDidBeginRefreshing:) forControlEvents:UIControlEventValueChanged]; 
[self.table addSubview:refreshControl]; 

Il problema è che la ruota di aggiornamento è posizionata sotto la barra trasparente del UINavigationController (iOS7). C'è solo qualche argomento su questo problema su StackOverflow. E non mi hanno portato nessuna soluzione valida.

Ciò che desidero è rendere la posizione del mio UIRefreshControl 80px in basso, ad esempio.

Nota: So che non è consigliabile utilizzare UIRefreshControl all'esterno di UITableViewController. Quindi non c'è bisogno di avvertirlo.

+0

Può essere utile notare che il mio UITableView è impostato con il layout automatico, come il resto delle mie viste, a livello di programmazione. (Ma non dovrebbe avere nulla a che fare con esso) – AncAinu

risposta

27

ho trovato una soluzione, molto semplice, non molto pulito, ma funziona come un fascino.

Basta inserire il controllo di aggiornamento in un'altra sottoview impostata.

UIView *refreshView = [[UIView alloc] initWithFrame:CGRectMake(0, 80, 0, 0)]; 
[self.table addSubview:refreshView]; 

UIRefreshControl *refreshControl = [UIRefreshControl new]; 
[refreshControl addTarget:self action:@selector(viewDidBeginRefreshing:) forControlEvents:UIControlEventValueChanged]; 
[refreshView addSubview:refreshControl]; 
+2

Come mostrato sopra assicuratevi di aggiungere il contenitore 'UIView' a 'UITableView' prima di aggiungere' UIRefreshControl' come sottoview al contenitore' UIView'. L'ho fatto viceversa e fallisce. – pechar

+0

''UIRefreshControl può essere gestito solo da un UITableViewController'', penso causato dal problema note @pechar – SimplGy

0

tenta di aggiungere questo nella viewDidLoad nel vostro UIViewController:

if ([self respondsToSelector:@selector(edgesForExtendedLayout)]) 
    self.edgesForExtendedLayout = UIRectEdgeNone; 
+0

Funziona ma ... non nel modo che voglio, rende la barra di navigazione opaca e costringe giù l'intera tabella. – AncAinu

Problemi correlati