IOS如何检测完成的方向

时间:2016-09-15 04:42:50

标签: ios xamarin xamarin.ios xamarin.forms orientation

我有一个基于UIView的渲染器。我可以在设备旋转时看到动画发生变化,导致layoutSubviews调用多次。有没有办法在旋转设备完成后检测视图的动画。

这是layoutSubview调用

public override void LayoutSubviews()
{
        base.LayoutSubviews();

        var size = base.Frame;
        Element.OnSizeChanged((int) size.Width, (int) size.Height);
}

2 个答案:

答案 0 :(得分:0)

查看viewWillTransitionToSize

  

UIKit在更改显示的视图控制器视图的大小之前调用此方法。您可以在自己的对象中覆盖此方法,并使用它来执行与大小更改相关的其他任务。例如,容器视图控制器可能使用此方法来覆盖其嵌入的子视图控制器的特征。使用提供的协调器对象为您所做的任何更改设置动画。

refer apple documentation了解详情!!

答案 1 :(得分:0)

您可以通过UIViewController方法中的协调器完成处理程序捕获ViewWillTransitionToSize轮换的结束:

public override void ViewWillTransitionToSize(CGSize toSize, IUIViewControllerTransitionCoordinator coordinator)
{
    coordinator.AnimateAlongsideTransition(
        (IUIViewControllerTransitionCoordinatorContext obj) => { },
        (IUIViewControllerTransitionCoordinatorContext obj) => 
    {
        Console.WriteLine("Transition Completion");
    });
    base.ViewWillTransitionToSize(toSize, coordinator);
}