コード例 #1
0
ファイル: IosXFPopupSrvc.cs プロジェクト: thaihung203/xfpopup
        public void ShowTopNoti(Xamarin.Forms.Page page, Xamarin.Forms.View noti, int ttl = 1500)
        {
            if (noti != null && page != null)
            {
                var render = Convert(noti, page);


                if (render != null)
                {
                    nfloat width  = XFPopupConst.SCREEN_WIDTH;
                    var    size   = noti.GetSizeRequest(XFPopupConst.SCREEN_WIDTH - 4, XFPopupConst.SCREEN_HEIGHT * 0.2f);
                    nfloat height = (int)size.Request.Height;

                    if (height > (XFPopupConst.SCREEN_HEIGHT * 0.2f))
                    {
                        height = (int)(XFPopupConst.SCREEN_HEIGHT * 0.2f);
                    }

                    //important
                    noti.Layout(new Xamarin.Forms.Rectangle(0, 0, width, height));

                    var win = new UIWindow(new CGRect(0, 0, width, height));
                    win.WindowLevel = UIKit.UIWindowLevel.Alert;
                    var native = render as UIKit.UIView;
                    win.AddSubview(native);
                    win.Alpha = 0;
                    win.MakeKeyAndVisible();

                    native.Frame = new CGRect(1, 0, width - 2, 0);

                    win.Alpha = 1;
                    UIView.Animate(
                        duration: 1f,
                        delay: 0f,
                        options: UIViewAnimationOptions.TransitionNone,
                        animation: () => {
                        native.Frame = new CoreGraphics.CGRect(1, 20, width - 2, height - 2);
                    },
                        completion: () => {
                        UIView.Animate(
                            duration: ttl / 1000,
                            delay: 0f,
                            options: UIViewAnimationOptions.CurveEaseInOut,
                            animation: () => { win.Alpha = 0; },
                            completion: () => {
                            native.RemoveFromSuperview();
                            native = null;
                            win.RemoveFromSuperview();
                            win = null;
                        }
                            );
                    }
                        );
                }
            }
        }
コード例 #2
0
        public IXFPopupCtrl CreateDialog(Page page, Xamarin.Forms.View content, bool cancelable)
        {
            CustomDialog dlg = null;

            //first try to get the PopupHolderRenderer

            if (content != null)
            {
                var render = Convert(content, page);


                if (render != null)
                {
                    var size = content.GetSizeRequest(XFPopupConst.SCREEN_WIDTH, XFPopupConst.SCREEN_HEIGHT);

                    var width  = (int)size.Request.Width;
                    var height = (int)size.Request.Height;


                    if (width > XFPopupConst.SCREEN_WIDTH)
                    {
                        width = (int)(XFPopupConst.SCREEN_WIDTH * 3 / 4);
                    }

                    if (height > (XFPopupConst.SCREEN_HEIGHT * 3 / 4))
                    {
                        height = (int)(XFPopupConst.SCREEN_HEIGHT * 3 / 4);
                    }

                    //important
                    content.Layout(new Rectangle(0, 0, width, height));



                    float density = Forms.Context.Resources.DisplayMetrics.Density;
                    width  = (int)(width * density);
                    height = (int)(height * density);


                    var native = render as Android.Views.View;
                    native.LayoutParameters = new ViewGroup.LayoutParams(width, height);

                    LinearLayout ll = new LinearLayout(Forms.Context);
                    ll.SetBackgroundResource(Resource.Layout.rounded_rectangle_bgr);
                    ll.LayoutParameters = new ViewGroup.LayoutParams(width + 4, height + 4);
                    ll.AddView(native);

                    dlg = new CustomDialog(ll, cancelable);
                }
            }
            return(dlg);
        }
コード例 #3
0
ファイル: IosXFPopupSrvc.cs プロジェクト: thaihung203/xfpopup
        public IXFPopupCtrl CreateDropDown(Xamarin.Forms.View anchor, Xamarin.Forms.View drop)
        {
            CustomPopup dlg = null;

            //first try to get the PopupHolderRenderer
            //first try to get the PopupHolderRenderer
            if (anchor == null || drop == null)
            {
                return(null);
            }

            var anchorRender = anchor.GetValue(RendererProperty) as UIView;

            if (anchorRender == null)
            {
                return(null);
            }

            var render = Convert(drop, anchor);

            if (render == null)
            {
                return(null);
            }

            if (render != null)
            {
                var size   = drop.GetSizeRequest(anchorRender.Bounds.Width, XFPopupConst.SCREEN_HEIGHT);
                var width  = anchorRender.Bounds.Width;
                var height = (int)size.Request.Height;
                if (height > (XFPopupConst.SCREEN_HEIGHT * 3 / 4))
                {
                    height = (int)(XFPopupConst.SCREEN_HEIGHT * 3 / 4);
                }

                //important
                drop.Layout(new Xamarin.Forms.Rectangle(0, 0, width - 2 * padding, height));

                var native = render as UIKit.UIView;
                native.Frame = new CoreGraphics.CGRect(padding, padding, width - 2 * padding, height);

                dlg = new CustomPopup(native, true, width, height + 2 * padding, ShowType.DropDown, anchorRender);
            }
            return(dlg);
        }
コード例 #4
0
        public IXFPopupCtrl CreateDropDown(Xamarin.Forms.View anchor, Xamarin.Forms.View drop)
        {
            CustomDropDown dropctr = null;

            //get the renderer of anchor
            if (anchor != null)
            {
                var ar = anchor.GetValue(RendererProperty);
                if (ar != null)
                {
                    var dropView = Convert(drop, anchor);

                    if (dropView == null)
                    {
                        return(null);
                    }

                    double w = (int)anchor.Width;
                    double h = XFPopupConst.SCREEN_HEIGHT / 2;
                    drop.WidthRequest = w;
                    var size = drop.GetSizeRequest(w, XFPopupConst.SCREEN_HEIGHT / 2);
                    if (size.Request.Height < h)
                    {
                        h = size.Request.Height;
                    }


                    drop.Layout(new Rectangle(0, 0, w, h));

                    float density = Forms.Context.Resources.DisplayMetrics.Density;
                    w = w * density;
                    h = h * density;


                    var native = dropView as Android.Views.View;
                    native.LayoutParameters = new ViewGroup.LayoutParams((int)w, (int)h);

                    dropctr = new CustomDropDown(ar as Android.Views.View, native, (int)w + 4, (int)h + 10);
                }
            }

            return(dropctr);
        }
コード例 #5
0
ファイル: IosXFPopupSrvc.cs プロジェクト: thaihung203/xfpopup
        public IXFPopupCtrl CreateDialog(Page page, Xamarin.Forms.View content, bool cancelable)
        {
            CustomPopup dlg = null;

            if (content != null)
            {
                var render = Convert(content, page);

                if (render != null)
                {
                    var size = content.GetSizeRequest(XFPopupConst.SCREEN_WIDTH, XFPopupConst.SCREEN_HEIGHT);

                    var width  = (int)size.Request.Width;
                    var height = (int)size.Request.Height;


                    if (width > XFPopupConst.SCREEN_WIDTH)
                    {
                        width = (int)(XFPopupConst.SCREEN_WIDTH * 3 / 4);
                    }

                    if (height > (XFPopupConst.SCREEN_HEIGHT * 3 / 4))
                    {
                        height = (int)(XFPopupConst.SCREEN_HEIGHT * 3 / 4);
                    }

                    //important
                    content.Layout(new Xamarin.Forms.Rectangle(0, 0, width, height));

                    var native = render as UIKit.UIView;

                    native.Frame = new CoreGraphics.CGRect(padding, padding, width, height);

                    dlg = new CustomPopup(native, cancelable, width + 2 * padding, height + 2 * padding, ShowType.Dialog);
                }
            }
            return(dlg);
        }
コード例 #6
0
ファイル: WPXFPopupSrvc.cs プロジェクト: thaihung203/xfpopup
        public IXFPopupCtrl CreateDialog(Xamarin.Forms.Page page, Xamarin.Forms.View content, bool cancelable)
        {
            CustomDialog dlg = null;

            if (content != null)
            {
                var render = Convert(content, page);

                if (render != null)
                {
                    var size = content.GetSizeRequest(XFPopupConst.SCREEN_WIDTH, XFPopupConst.SCREEN_HEIGHT);

                    var width  = (int)size.Request.Width;
                    var height = (int)size.Request.Height;


                    if (width > XFPopupConst.SCREEN_WIDTH)
                    {
                        width = (int)(XFPopupConst.SCREEN_WIDTH * 3 / 4);
                    }

                    if (height > (XFPopupConst.SCREEN_HEIGHT * 3 / 4))
                    {
                        height = (int)(XFPopupConst.SCREEN_HEIGHT * 3 / 4);
                    }

                    content.WidthRequest  = width;
                    content.HeightRequest = height;

                    //important
                    content.Layout(new Rectangle(0, 0, width, height));

                    dlg = new CustomDialog(content, cancelable);
                }
            }
            return(dlg);
        }