我有一个基于UIView的渲染器。我可以在设备旋转时看到动画发生变化,导致layoutSubviews调用多次。有没有办法在旋转设备完成后检测视图的动画。
这是layoutSubview调用
public override void LayoutSubviews()
{
base.LayoutSubviews();
var size = base.Frame;
Element.OnSizeChanged((int) size.Width, (int) size.Height);
}
答案 0 :(得分:0)
查看viewWillTransitionToSize
。
UIKit在更改显示的视图控制器视图的大小之前调用此方法。您可以在自己的对象中覆盖此方法,并使用它来执行与大小更改相关的其他任务。例如,容器视图控制器可能使用此方法来覆盖其嵌入的子视图控制器的特征。使用提供的协调器对象为您所做的任何更改设置动画。
答案 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);
}