Как преобразовать представление Xamarin Forms в собственное представление iOS / Android с тем же размером? - PullRequest
0 голосов
/ 16 июня 2020

Я использую здесь пример, но мне трудно указать здесь правильный параметр размера, чтобы он представлял тот же размер, что и представление форм. https://michaelridland.com/xamarin/creating-native-view-xamarin-forms-viewpage/

    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;
    }

И для Android:

public static ViewGroup ConvertFormsToNative(Xamarin.Forms.View view, Rectangle size)
{
    var vRenderer = RendererFactory.GetRenderer (view);
    var viewGroup = vRenderer.ViewGroup;
    vRenderer.Tracker.UpdateLayout ();
    var layoutParams = new ViewGroup.LayoutParams ((int)size.Width, (int)size.Height);
    viewGroup.LayoutParameters = layoutParams;
    view.Layout (size);
    viewGroup.Layout (0, 0, (int)view.WidthRequest, (int)view.HeightRequest);
    return viewGroup; 
}

}

Какие значения из моих Xamarin Forms должны быть вставлены , так что он будет представлять CGRect, необходимый для того, чтобы иметь то же самое в собственном представлении.

1 Ответ

0 голосов
/ 17 июня 2020
var rect = new CGRect(); 
rect.X = (nfloat)view.X; 
rect.Y = (nfloat)view.Y; 
rect.Width = (nfloat)view.Width; 
rect.Height = (nfloat)view.Height; 

Решено, где «представление» - это представление Xamarin Forms.

...