コード例 #1
0
        Task PresentModalAsync(Page modal, bool animated)
        {
            var modalRenderer = Platform.GetRenderer(modal);

            if (modalRenderer == null)
            {
                modalRenderer = Platform.CreateRenderer(modal);
                Platform.SetRenderer(modal, modalRenderer);
                modalRenderer.SetElementSize(new Size(_renderer.View.Bounds.Width, _renderer.View.Bounds.Height));
            }

            var toViewController = modalRenderer as NSViewController;

            var i = Math.Max(0, _renderer.ChildViewControllers.Length - 1);
            var fromViewController = _renderer.ChildViewControllers[i];

            _renderer.AddChildViewController(toViewController);

            NSViewControllerTransitionOptions option = animated
                                ? NSViewControllerTransitionOptions.SlideUp
                                : NSViewControllerTransitionOptions.None;

            var task = _renderer.HandleAsyncAnimation(fromViewController, toViewController, option,
                                                      () =>
            {
                //Hack: adjust if needed
                toViewController.View.Frame          = _renderer.View.Bounds;
                fromViewController.View.Layer.Hidden = true;
            }, true);

            return(task);
        }