1

ナビゲーションコントローラー内にビューがあり、ユーザーが何をすべきかについていくつかのことを示す「フル(アプリケーション)画面」オーバーレイを作成したいと思います。私はこれが他のアプリで少し透明性を持って行われているのを見てきました、そしてそれはうまくいきます。以下を試していますが、コンテンツはnavcontrollerヘッダーの下に表示されます。調査では、長方形を「ウィンドウレベル」の場所に変換することなどについて話し合っていますが、それでもその下にあります。

以下の私の弱い試みに代わるものはありますか?または、サンプルへのリンクも素晴らしいでしょう。

ありがとう!

HelpOverlayUIView _overlayView;

    public void PresentHelpOverlay()
    {
        RectangleF windowFullFrame = new RectangleF(0,0,UIScreen.MainScreen.Bounds.Width,UIScreen.MainScreen.Bounds.Height);

        // Conversion?
        //[aView convertPoint:localPosition toView:nil];
        RectangleF overlayFrame = View.ConvertRectFromView(windowFullFrame ,null);

        // Clear old one if it exists.
        if (_overlayView != null) _overlayView = null;

        // Instantiate popup view and add to (in this case the 2nd tier view).  This is in an abstract class, if in a concrete one it'd normally just be View.Add
        _overlayView = new HelpOverlayUIView(this, overlayFrame);

        // tried th, didn't change it.
        // this.WantsFullScreenLayout = true;
        // _childView.BringSubviewToFront(_overlayView);
        _overlayView.Alpha = 0;

        _childView.Add (_overlayView);

        // Setup event to close without doing anything.
        _overlayView.CloseView += (sender, e) => {

            Console.WriteLine ("close called");
            // animate modal popup's departure
            UIView.Animate (
                0.5f,
                () => {
                // Anim Code
                _overlayView.Alpha = 0;
            },
            null
            );

        };

        // animate modal popup's arrival
        UIView.Animate (
            0.5f,
            () => {
            // Anim Code
            _overlayView.Alpha = 1;
        },
        null
        );

    }

(ビューは、テキストなどをビューに配置するDraw()メソッドへのオーバーロードを備えた単なるUIViewです)

4

1 に答える 1

1

_overlayViewを、NavigationViewControllerなどのビュー階層の上位に追加できます。NavigationViewControllerがRootViewControllerに設定されている場合(実際に何であるかに関係なく)、これを試すことができます。

((AppDelegate)UIApplication.SharedApplication.Delegate).Window.RootViewController.Add(_overlayView);

このようにサブビューを前面に表示することもできますが、これはそのビューの前面にのみ表示され、すべての前面には表示されません(_childViewがNavigationViewControllerでない限り、これは実際には必要ありません)。

_childView.BringSubviewToFront(_overlayView);
于 2012-12-21T06:56:08.343 に答える