Xamarin.iOS: как определить высоту строки состояния в ViewWillTransitionToSize - PullRequest
0 голосов
/ 18 декабря 2018

У меня есть представление, содержащее:

  • a MKMapView, для отображения некоторых элементов на карте
  • и UITableView, встроенных вUIView, для отображения элементов в списке

Пользователь должен иметь возможность отображать карту или список, перемещая разделитель .

Это работает хорошо, но Я сталкиваюсь с проблемой после того, как пользователь поворачивает экран : в этом случае список больше не отображается правильно.

позиция списка UIView устанавливается путем указания ограничения верхнего поля: когда я впервые узнаю высоту строки состояния UIApplication.SharedApplication.StatusBarFrame.Height).

Но послеротацию, мне нужно пересчитать это ограничение. Для этого я пытаюсь пересчитать ограничения в ViewWillTransitionToSize().

Моя проблема в том, что я не получаю ожидаемое значение во время вызова ViewWillTransitionToSize(): установлено «старое» значение из StatusBarFrame.Height.

Я также пытаюсь получить статус в строке состояния с помощью UIApplication.SharedApplication.StatusBarHidden, ноПроблема та же.

Есть ли другой способ, позволяющий мне получить правильную высоту строки состояния во время вращения?

1 Ответ

0 голосов
/ 21 декабря 2018

Я проверил статус строки состояния в неправильном месте:

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);
}

Если тест выполняется неправильно, это работает нормально.

...