Xamarin.iOS: como determinar a altura de estado em ViewWillTransitionToSize

votos
0

Eu tenho ter uma visão contendo:

  • um MKMapView, para exibir alguns itens em um mapa
  • um UITableViewincorporado em um UIView, para exibir os itens em uma lista

O usuário deve ser capaz de exibir o mapa ou na lista, movendo um separador .

Isso funciona bem, mas eu encontrar um problema depois que o usuário gira a tela : neste caso, a lista não é mais exibido corretamente.

A posição da lista UIView está setado, especificando que é superior restrição margin: a primeira vez que eu sei que a altura da barra de status (com UIApplication.SharedApplication.StatusBarFrame.Height).

Mas após a rotação, preciso recalcular essa restrição. Para isso, eu tento para recalcular as restrições no ViewWillTransitionToSize().

Meu problema é que eu não receber o valor esperado durante a chamada para ViewWillTransitionToSize(): o valor velho de StatusBarFrame.Heightestá setado.

Eu também tentar obter o estatuto de estado com UIApplication.SharedApplication.StatusBarHiddenmas o problema é o mesmo.

Existe outra maneira permitindo-me para obter a altura de estado correta durante a rotação?

Publicado 18/12/2018 em 11:06
fonte usuário
Em outras línguas...                            


1 respostas

votos
0

Eu testei o status de estado no lugar errado:

public override void ViewWillTransitionToSize(CoreGraphics.CGSize toSize, IUIViewControllerTransitionCoordinator coordinator) 
{
    coordinator.AnimateAlongsideTransition((IUIViewControllerTransitionCoordinatorContext obj) => {
        // Define any animations you want to perform (equivilent to willRotateToInterfaceOrientation)
        // StatusBar status and height is not yet updated
    }, (IUIViewControllerTransitionCoordinatorContext obj) => {
        // Completition executed after transistion finishes (equivilent to didRotateFromInterfaceOrientation)
        // StatusBar status and height is well updated
    });

    base.ViewWillTransitionToSize(toSize, coordinator);
}

Se o teste é não corretamente, isso funciona bem.

Respondeu 21/12/2018 em 16:22
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more