Domanda

Quando si utilizza un UITabBarController, come si ottiene la dimensione della barra delle schede in basso? Allo stesso modo, come si fa a sapere quanto spazio si ha all'interno della vista a schede per i propri contenuti? Vedo molti esempi di persone che ridimensionano le loro visualizzazioni figlio su [[UIScreen mainScreen] applicationFrame], che non può essere corretto perché la barra delle schede occupa un po 'di spazio nella parte inferiore dello schermo.

Inoltre, è possibile modificare le dimensioni della barra delle schede?

Grazie Ryan

È stato utile?

Soluzione

Il motivo per cui puoi usare applicationFrame è che UITabBarController ridimensiona le viste dei suoi subcontroller, quindi finché la tua vista supporta il ridimensionamento corretto, tutto funzionerà.

È possibile ottenere le dimensioni della barra delle schede accedendo alla proprietà tabBar del controller della barra delle schede e osservandone il riquadro. La dimensione totale della barra delle schede più l'area della vista può essere trovata osservando il riquadro della proprietà della vista del controller della barra delle schede, quindi una piccola sottrazione ti darà il numero che stai cercando:

CGFloat myViewHeight = tabBarController.view  .size.height
                     - tabBarController.tabBar.size.height;

Altri suggerimenti

Vecchia domanda, ma comunque:

Se non si carica la vista da un NIB, impostare i flag di ridimensionamento automatico nella funzione loadView; qualcosa del genere:

self.view.autoresizingMask = UIViewAutoresizingFlexibleHeight |
                             UIViewAutoresizingFlexibleWidth;

Se lo fai, puoi usare [[UIScreen mainScreen] applicationFrame] per specificare il frame della tua vista; verrà ridimensionato automaticamente se è presente una barra delle schede.

Se si dispone di un NIB per la vista, la maschera di ridimensionamento automatico viene impostata automaticamente da Interface Builder.

Markus

Se riesci a scoprire come ridimensionare un UITabBar, puoi ridimensionare un UITabBar di UITabBarController. Puoi accedere all'oggetto prendendo

[[UITabBarController subviews] objectAtIndex:0]

Ma nella documentazione si consiglia di non accedere direttamente all'oggetto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top