9

Sto configurando un UIRefreshControl nel mio uitableviewcontroller, ma c'è un grande divario tra la barra di navigazione e la parte superiore della uitableview. Giocare con "aggiusta gli inserti della vista di scorrimento" non aiuta, poiché il controller verrà sottoposto alla barra di navigazione all'avvio. Potrei disabilitare 'sotto le barre in alto', ma voglio quell'abilità quando lo scorrimento. Quando ho frugato nel debugger, ho notato varie volte che tableView.contentInset è stato sfalsato di 82 punti, che è diverso dall'ususal 20/64 pt offset che le persone parlano riguardo al nuovo comportamento della barra ios7. Cosa sta succedendo qui?Correggere l'offset UITableViewController dovuto a UIRefreshControl in iOS 7

risposta

24

Trovato una soluzione mentre spuntava di più; spero che salvi qualcuno qualche ora!

Avevo bisogno di istanziare il mio UIRefreshControl dopo viewDidLoad:, o evitare di impostare il suo attributedTitle nel codice almeno fino a dopo quello (ad es. Se ho abilitato l'aggiornamento della tabella in IB). Impostazione della stringa all'interno di viewDidLoad: incasina il layout di iOS del controllo + tableview, ma va bene entro viewWillAppear: o successivo una volta impostata la geometria. E penso che 82 punti sia l'altezza di UIRefreshControl. L'impostazione del titolo di aggiornamento in IB avrebbe anche evitato questo problema, tranne che lo stavo facendo in codice perché non volevo abilitare l'aggiornamento in IB per tutto il tempo con ciascuna delle mie tabelle.

+0

Grazie per aver postato questo! In effetti stavo impostando il mio attributoTitle del mio controllo di refresh in viewDidLoad e avrebbe rotto il layout se fosse stato fatto troppo rapidamente (prima di VWA). – adamweeks

+1

Wow, ho lottato per ore con questo stupendo controllo uirefresh. Grazie per questo! –

+4

Non ha funzionato per me in viewWillAppear, ma ha funzionato in viewDidAppear –