2015-04-18 2 views
8

Domande poste su questo problema. Ho provato tutto e non ho potuto risolvere il mio problema. Ho faticato per 2 ore e ora sto postando questo qui.Extra 20px Top Inset UIScrollView Numero

Problema: il contenuto principale di UIScrollViewInset ha sempre 20px di spazio in più.

Ho un controller di vista xib, non uno storyboard.

La prima domanda correlata e la relativa soluzione su stackoverflow presuppone che UIScrollView sia la vista radice di UIViewController. Ma la mia scrollview non è la root view e quindi questo perché forse

self.automaticallyAdjustsScrollViewInsets = NO;

non funziona

  • Ho una HeaderView con leadingspace (0, superview), finali spazio (0, super vista), lo spazio superiore (0, superview) e altezza fissa.
  • Sotto vista di testa che ScrollView con spazio iniziale (0, superview), spazio finale (0, superview), lo spazio inferiore (0, superview) e spazio verticale (0, vista intestazione)
  • C'è una vista all'interno della scrollview per i contenuti. Questa vista ha iniziale (0), finale (0), inferiore (0) e superiore (0) spazio per scorrere la vista.

Ecco lo screenshot di quello in alto extra di 20 px. Extra 20px è l'area nera tra la linea bianca e il contenuto in grigio chiaro di UIScrollView Non riesco a risolverlo. enter image description here

Sto facendo qualcosa di sbagliato? I vincoli di Autolayout sembrano soddisfacenti.

risposta

24

Il controller è incorporato in un controller di navigazione? Sembra che iOS stia lasciando 20px in alto per una barra di stato, ma il tuo controller non ne ha uno.

In entrambi i casi, nel vostro viewDidLoad dovrebbe funzionare se si regola lo ScrollView prima di chiamare super:

- (void)viewDidLoad { 
    self.automaticallyAdjustsScrollViewInsets = NO; 
    self.scrollView.contentInset = UIEdgeInsetsMake(0,0,0,0); 
    [super viewDidLoad]; 
    } 

Il motivo per cui iOS potrebbe essere automaticamente costringendo lo ScrollView avere un 20px TOP contentInset è perché potrebbe essere la vista con l'indice 0 nella tua vista principale. Potete leggere ulteriori qui: http://b2cloud.com.au/how-to-guides/uiviewcontroller-changes-in-ios7

Per impostazione predefinita, un UIViewController regola automaticamente il contenuto inserti di esso è UIScrollView (compresi UITableViews) in vista indice 0, molto al posteriore. Ciò significa che se c'è un pulsante, un'etichetta o qualsiasi altra vista dietro la tua vista tabella, non otterrai questo comportamento gratuitamente.

+1

Era una cosa indice. Grazie. –

+0

thnx molto, ragazzi –