Le celle dello UITableView
spettacolo si trovano nello spazio vuoto quando scorri verso il basso?
In tal caso, il problema potrebbe essere l'inser che viene aggiunto a UITableView
causa del controller di navigazione che hai nella tua vista. L'inserto viene aggiunto alla vista tabella in modo che il contenuto venga posizionato sotto la barra di navigazione quando non si verifica alcuno scorrimento. Quando si scorre la tabella, il contenuto scorre e viene mostrato sotto una barra di navigazione trasparente. Questo comportamento è ovviamente desiderato solo se la vista della tabella inizia direttamente sotto la barra di navigazione, che non è il caso qui.
Un'altra cosa da notare è che iOS regola l'inserzione del contenuto solo per la prima vista nella gerarchia della vista se è UIScrollView
o è discendente (ad es. UITableView
E UICollectionView
). Se la gerarchia delle viste include più viste di scorrimento, automaticallyAdjustsScrollViewInsets
apporterà modifiche solo alla prima.
Ecco come modificare questo comportamento:
a) Interface Builder
- Seleziona il controller di visualizzazione
- Apri la finestra di controllo Attributi
C'è una proprietà chiamata "Regola gli inserti della vista di scorrimento" nella finestra di ispezione degli attributi IB (quando è selezionato un controller di vista) che è attivo per impostazione predefinita. Deseleziona questa opzione:
(Immagine gentilmente concessa da Dheeraj D )
Non sono sicuro di quale versione di Xcode abbia introdotto questa opzione (non è stata individuata nelle note di rilascio), ma è almeno disponibile nella versione 5.1.1.
Modifica: per evitare confusione, questa era la terza opzione menzionata nei commenti
b) a livello di codice
Aggiungi questo al cioè viewDidLoad
(crediti per Slavco Petkovski 'risposta s e Cris R ' commento s)
// Objective-C
self.automaticallyAdjustsScrollViewInsets = NO;
// Swift
self.automaticallyAdjustsScrollViewInsets = false
c) Questo potrebbe essere rilevante per i vecchi scolari
Puoi risolvere questo problema aggiungendo
tableView.contentInset = UIEdgeInsetsZero
//Swift 3 Change
tableView.contentInset = UIEdgeInsets.zero
O se stai usando IB e se la barra di navigazione non è trasparente (non puoi dirlo dallo screenshot)
- Seleziona il controller di visualizzazione
- Apri la finestra di controllo Attributi
- Nella sezione Visualizza controller Estendi bordi deseleziona "Sotto le barre superiori"