0

我有一个包含以下内容的视图:

  • a MKMapView, 在地图上显示一些项目
  • 嵌入UITableView在 a 中UIView,以显示列表中的项目

用户必须能够通过移动分隔符来显示地图或列表。

这很好用,但是在用户旋转屏幕后我遇到了一个问题:在这种情况下,列表不再正确显示。

列表的位置UIView通过指定它的上边距约束来设置的:我第一次知道状态栏的高度(带有UIApplication.SharedApplication.StatusBarFrame.Height)。

但是在旋转之后,我需要重新计算这个约束。为此,我尝试重新计算ViewWillTransitionToSize().

我的问题是在调用期间我没有得到预期值 ViewWillTransitionToSize():设置了“旧”StatusBarFrame.Height值。

我也尝试获取状态栏状态UIApplication.SharedApplication.StatusBarHidden但问题是一样的。

是否有另一种方法可以让我在旋转过程中获得正确的状态栏高度?

4

1 回答 1

0

我在错误的地方测试了状态栏状态:

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

如果测试不正确,这可以正常工作。

于 2018-12-21T16:22:24.307 回答