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; }
CGPath?GetClipPath() { if (_shape != null) { var bounds = _bounds.ToRectangle(); var path = _shape.PathForBounds(bounds); return(path?.AsCGPath()); } return(null); }
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()); }
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); }
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); }
// 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); }
//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()); } }
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); }
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; //} } }
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()); }