Example #1
0
        public void SetCustomView(Xamarin.Forms.View backgroundView, bool isForDestructive = false)
        {
            GetDefaultValuesIfNeeded();

            //Convert Xamarin.Forms.View to a Native UIView
            var defaultSize = new CGRect(0, 0, backgroundView.WidthRequest > 0 ? backgroundView.WidthRequest : 80, backgroundView.HeightRequest > 0 ? backgroundView.WidthRequest : 120);
            var renderer    = Platform.CreateRenderer(backgroundView);

            renderer.NativeView.Frame            = defaultSize;
            renderer.NativeView.AutoresizingMask = UIViewAutoresizing.All;
            renderer.NativeView.ContentMode      = UIViewContentMode.ScaleToFill;
            renderer.Element.Layout(defaultSize.ToRectangle());
            var nativeView = renderer.NativeView;

            nativeView.SetNeedsLayout();

            //Convert UIView into a UIImage
            UIGraphics.BeginImageContextWithOptions(nativeView.Bounds.Size, nativeView.Opaque, 0.0f);
            nativeView.Layer.RenderInContext(UIGraphics.GetCurrentContext());
            var nativeImage = UIGraphics.GetImageFromCurrentImageContext();

            UIGraphics.EndImageContext();

            SetNativeView(nativeImage, isForDestructive);
        }
        CGRect GetPopupPositionAndLayout()
        {
            if (string.IsNullOrEmpty(_currentPopup))
            {
                return(CGRect.Empty);
            }
            var popup = _popupBasePage.PopupViews [_currentPopup] as SlidePopupView;

            // This should layout with LeftMargin, TopMargin, WidthRequest and HeightRequest
            CGRect pos;

            popup.CalucatePosition();
            nfloat y      = (nfloat)popup.TopMargin;
            nfloat x      = (nfloat)popup.LeftMargin;
            nfloat width  = (nfloat)(popup.WidthRequest <= 0 ? ScreenSizeHelper.ScreenWidth - popup.LeftMargin * 2 : popup.WidthRequest);
            nfloat height = (nfloat)(popup.HeightRequest <= 0 ? ScreenSizeHelper.ScreenHeight - popup.TopMargin * 2 : popup.HeightRequest);

            var scrollCounters = RecureFindScrolled(_pageRenderer.View);

            if (scrollCounters.HasValue && popup.TargetControl != null)
            {
                x -= (nfloat)scrollCounters.Value.X;
                y -= (nfloat)scrollCounters.Value.Y;
            }

            pos = new CGRect(x, y, width, height);
            popup.Layout(pos.ToRectangle());

            _popupNativeView.Frame = pos;
            _popupNativeView.SetNeedsLayout();

            return(pos);
        }
        private UIView ConvertFormsToNative(Xamarin.Forms.View view, CGRect size)
        {
            try
            {
                var renderer = Platform.GetRenderer(view);

                renderer.NativeView.Frame = size;

                renderer.NativeView.AutoresizingMask = UIViewAutoresizing.All;
                renderer.NativeView.ContentMode      = UIViewContentMode.ScaleToFill;

                renderer.Element.Layout(size.ToRectangle());

                var nativeView = renderer.NativeView;

                nativeView.SetNeedsLayout();

                return(nativeView);
            }
            catch (Exception e)
            {
                //CrashTracker.Track(e);
                return(null);
            }
        }
        CGRect GetPopupPositionAndLayout()
        {
            if (string.IsNullOrEmpty(_currentPopup))
            {
                return(CGRect.Empty);
            }
            var popup = _popupBasePage.PopupViews [_currentPopup] as SlidePopupView;

            // This should layout with LeftMargin, TopMargin, WidthRequest and HeightRequest
            CGRect pos;

            popup.CalucatePosition();
            nfloat y      = (nfloat)popup.TopMargin;
            nfloat x      = (nfloat)popup.LeftMargin;
            nfloat width  = (nfloat)(popup.WidthRequest <= 0 ? ScreenSizeHelper.ScreenWidth - popup.LeftMargin * 2 : popup.WidthRequest);
            nfloat height = (nfloat)(popup.HeightRequest <= 0 ? ScreenSizeHelper.ScreenHeight - popup.TopMargin * 2 : popup.HeightRequest);

            pos = new CGRect(x, y, width, height);
            popup.Layout(pos.ToRectangle());

            _popupNativeView.Frame = pos;
            _popupNativeView.SetNeedsLayout();

            return(pos);
        }
        /// <summary>
        /// Layouts the subviews.
        /// </summary>
        public override void LayoutSubviews()
        {
            base.LayoutSubviews();
            CGRect frame = ContentView.Frame;

            frame.X = (Bounds.Width - frame.Width) / 2;
            frame.Y = (Bounds.Height - frame.Height) / 2;
            ViewCell.View.Layout(frame.ToRectangle());
            _view.Frame = frame;
        }
Example #6
0
        CGPath?GetClipPath()
        {
            if (_shape != null)
            {
                var bounds = _bounds.ToRectangle();
                var path   = _shape.PathForBounds(bounds);
                return(path?.AsCGPath());
            }

            return(null);
        }
Example #7
0
        internal static void LayoutToSize(this IView view, double width, double height)
        {
            var platformFrame = new CGRect(0, 0, width, height);

            if (view.Handler is IPlatformViewHandler viewHandler && viewHandler.PlatformView != null)
            {
                viewHandler.PlatformView.Frame = platformFrame;
            }

            view.Arrange(platformFrame.ToRectangle());
        }
Example #8
0
        internal static Size LayoutToMeasuredSize(this IView view, double width, double height)
        {
            var size          = view.Measure(width, height);
            var platformFrame = new CGRect(0, 0, size.Width, size.Height);

            if (view.Handler is IPlatformViewHandler viewHandler && viewHandler.PlatformView != null)
            {
                viewHandler.PlatformView.Frame = platformFrame;
            }

            view.Arrange(platformFrame.ToRectangle());
            return(size);
        }
        public static UIView ConvertFormsToNative(View view, CGRect size, out IVisualElementRenderer renderer)
        {
            renderer = Platform.CreateRenderer(view);
            renderer.NativeView.Frame            = size;
            renderer.NativeView.AutoresizingMask = UIViewAutoresizing.All;
            renderer.NativeView.ContentMode      = UIViewContentMode.ScaleToFill;
            renderer.Element.Layout(size.ToRectangle());

            var nativeView = renderer.NativeView;

            nativeView.SetNeedsLayout();
            return(nativeView);
        }
Example #10
0
        public static UIView ConvertFormsToNative(this Xamarin.Forms.View view)
        {
            var renderer = view.GetOrCreateRenderer();
            var size     = new CGRect(view.X, view.Y, view.Width, view.Height);

            renderer.NativeView.Frame            = size;
            renderer.NativeView.AutoresizingMask = UIViewAutoresizing.All;
            renderer.NativeView.ContentMode      = UIViewContentMode.ScaleToFill;
            renderer.Element.Layout(size.ToRectangle());
            var nativeView = renderer.NativeView;

            nativeView.SetNeedsLayout();
            return(nativeView);
        }
        // @see https://michaelridland.com/xamarin/creating-native-view-xamarin-forms-viewpage/
        UIView viewToUIView(Xamarin.Forms.View view)
        {
            CGRect size = new CGRect(view.X, view.Y, view.Width, view.Height);

            var renderer = Platform.CreateRenderer(view);

            renderer.NativeView.Frame            = size;
            renderer.NativeView.AutoresizingMask = UIViewAutoresizing.All;
            renderer.NativeView.ContentMode      = UIViewContentMode.ScaleToFill;
            renderer.Element.Layout(size.ToRectangle());

            var nativeView = renderer.NativeView;

            nativeView.SetNeedsLayout();

            return(nativeView);
        }
Example #12
0
		// Code taken from 
		// http://www.michaelridland.com/xamarin/creating-native-view-xamarin-forms-viewpage/
		public static UIView ConvertFormsToNative(Xamarin.Forms.View view, CGRect size)
		{
			var renderer = Platform.CreateRenderer(view);

			renderer.NativeView.Frame = size;

			renderer.NativeView.AutoresizingMask = UIViewAutoresizing.All;
			renderer.NativeView.ContentMode = UIViewContentMode.ScaleToFill;

			renderer.Element.Layout (size.ToRectangle());

			var nativeView = renderer.NativeView;

			nativeView.SetNeedsLayout ();

			return nativeView;
		}
        public static UIView ConvertToNative(this Xamarin.Forms.View view, CGRect size)
        {
            var renderer = Platform.CreateRenderer(view);

            renderer.NativeView.Frame            = size;
            renderer.NativeView.Hidden           = false;
            renderer.NativeView.AutoresizingMask = UIViewAutoresizing.All;
            renderer.NativeView.ContentMode      = UIViewContentMode.ScaleToFill;

            renderer.Element.Layout(size.ToRectangle());

            var nativeView = renderer.NativeView;

            nativeView.SetNeedsLayout();

            return(nativeView);
        }
        //http://www.michaelridland.com/xamarin/creating-native-view-xamarin-forms-viewpage/
        private static UIView ConvertFormsToNative(Xamarin.Forms.View view, CGRect size)
        {
            var renderer = Platform.CreateRenderer(view);

            renderer.NativeView.Frame = size;

            renderer.NativeView.AutoresizingMask = UIViewAutoresizing.All;
            renderer.NativeView.ContentMode      = UIViewContentMode.ScaleAspectFit;

            renderer.Element.Layout(size.ToRectangle());

            var nativeView = renderer.NativeView;

            nativeView.SetNeedsLayout();

            return(nativeView);
        }
        public UIView CreateCustomView(View customView, CGRect size)
        {
            var renderer = Platform.CreateRenderer(customView);

            renderer.NativeView.Frame = size;

            renderer.NativeView.AutoresizingMask = UIViewAutoresizing.All;
            renderer.NativeView.ContentMode      = UIViewContentMode.ScaleToFill;

            renderer.Element.Layout(size.ToRectangle());

            var nativeView = renderer.NativeView;

            nativeView.SetNeedsLayout();

            return(nativeView);
        }
Example #16
0
        //https://michaelridland.com/xamarin/creating-native-view-xamarin-forms-viewpage/
        private UIView ConvertFormsToNative(Picker view, CGRect size)
        {
            var renderer = Platform.GetRenderer(view);

            renderer.NativeView.Frame = size;

            //renderer.NativeView.AutoresizingMask = UIViewAutoresizing.None;
            //renderer.NativeView.ContentMode = UIViewContentMode.Center;

            renderer.Element.Layout(size.ToRectangle());

            var nativeView = renderer.NativeView;

            nativeView.SetNeedsDisplayInRect(size);

            return(nativeView);
        }
    public static UIView ConvertFormsToNative(Xamarin.Forms.View view, CGRect size)
    {
        var renderer = RendererFactory.GetRenderer(view);

        renderer.NativeView.Frame = size;

        renderer.NativeView.AutoresizingMask = UIViewAutoresizing.All;
        renderer.NativeView.ContentMode      = UIViewContentMode.ScaleToFill;

        renderer.Element.Layout(size.ToRectangle());

        var nativeView = renderer.NativeView;

        nativeView.SetNeedsLayout();

        return(nativeView);
    }
        /// <summary>
        /// Toucheses the moved.
        /// </summary>
        /// <param name="touches">The touches.</param>
        /// <param name="evt">The evt.</param>
        public override void TouchesMoved(NSSet touches, UIEvent evt)
        {
            base.TouchesMoved(touches, evt);

            if (this.touchedView == null)
            {
                return;
            }

            var newLoc = ((UITouch)touches.First()).LocationInView(this);

            var frame = new CGRect(
                new CGPoint(newLoc.X - this.offsetLocation.X, newLoc.Y - this.offsetLocation.Y),
                this.touchedView.Frame.Size);

            if (this.touchedElement != null)
            {
                this.touchedElement.Layout(frame.ToRectangle());
            }
        }
Example #19
0
        public static UIView ToiOS(this Xamarin.Forms.View view, CGRect size)
        {
            if (Platform.GetRenderer(view) == null)
            {
                Platform.SetRenderer(view, Platform.CreateRenderer(view));
            }

            var vRenderer = Platform.GetRenderer(view);

            vRenderer.NativeView.Frame = size;

            vRenderer.NativeView.AutoresizingMask = UIViewAutoresizing.All;
            vRenderer.NativeView.ContentMode      = UIViewContentMode.ScaleToFill;

            vRenderer.Element?.Layout(size.ToRectangle());

            var nativeView = vRenderer.NativeView;

            nativeView.SetNeedsLayout();

            return(nativeView);
        }
Example #20
0
        public override void TouchesMoved(NSSet touches, UIEvent evt)
        {
            base.TouchesMoved(touches, evt);

            var t = touches.ToArray <UITouch>();

            if (this.touchedView != null)
            {
                var newLoc = t[0].LocationInView(this);

                var frame = new CGRect(
                    new CGPoint(newLoc.X - this.offsetLocation.X, newLoc.Y - this.offsetLocation.Y),
                    this.touchedView.Frame.Size);

                if (this.touchedElement != null)
                {
                    this.touchedElement.Layout(frame.ToRectangle());
                }
                //else
                //{
                //    this.touchedView.Frame = frame;
                //}
            }
        }
Example #21
0
 

 private static UIView ConvertFormsToNative(Xamarin.Forms.View view, CGRect size) 

 {
     
 var renderer = RendererFactory.GetRenderer(view); 
 renderer.NativeView.Frame = size; 
 renderer.Element.Layout(size.ToRectangle()); 

 var nativeView = renderer.NativeView; 
 nativeView.SetNeedsLayout(); 

                  return(nativeView); 

 }
 public override void DrawRect(CGRect dirtyRect)
 {
     owner.OnPaint(dirtyRect.ToRectangle());
 }