如何调整视图中子视图的大小,该视图从 Xamarin.forms.View 转换为 UIView



我正在努力使用以下代码片段将 Xamarin Forms View 转换为本机 UIView。但是无法从 Xamarin 窗体视图中获取视图的大小,并且在调整视图大小时也无法自动调整子视图的大小。

我尝试使用自动调整大小掩码,但它不起作用。任何帮助都非常感谢。

public void CustomView(int pageIndex, View customView, Point offset)
{
 var visualElement = Platform.CreateRenderer(customView);
 visualElement.NativeView.Frame = new CGRect((int)offset.X, (int)offset.Y, 
 (int)100, (int)100);
 visualElement.NativeView.AutoresizingMask = 
 UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight;
 visualElement.NativeView.ContentMode = UIViewContentMode.ScaleToFill;
 visualElement.NativeView.AutosizesSubviews = true;
 visualElement.Element.Layout(new CGRect((int)offset.X, (int)offset.Y, 
 (int)100, (int)100).ToRectangle());
 visualElement.Element.AutoresizingMask = UIViewAutoresizing.All;
 visualElement.NativeView.AutosizesSubviews = true;
 }

CustomView 传递了上述内容:

Grid grid = new Grid();
        grid.HeightRequest = 400;
        grid.WidthRequest = 300;
        grid.BackgroundColor = Color.Yellow;            
        Image customImage = new Image();
        customImage.VerticalOptions = LayoutOptions.FillAndExpand;
        customImage.HorizontalOptions = LayoutOptions.FillAndExpand;            
        customImage.Source = "Approved.png";
        grid.Children.Add(customImage);

我尝试在转换后调整 NativeView 的大小,但图像没有根据布局更改调整大小。

自从自动布局出来以来,我们不再使用AutoResizingMask了。

尝试修改代码

public void CustomView(int pageIndex, View customView, Point offset)
    {
        var visualElement = Platform.CreateRenderer(customView);
        var view = visualElement.NativeView;
        var margins = View.LayoutMarginsGuide;// Get the parent view's layout
        view.LeadingAnchor.ConstraintGreaterThanOrEqualTo(margins.LeadingAnchor,(nfloat)offset.X).Active = true;
        view.TopAnchor.ConstraintGreaterThanOrEqualTo(margins.TopAnchor,(nfloat)offset.Y).Active = true;
        view.HeightAnchor.ConstraintEqualTo(100).Active = true;
        view.WidthAnchor.ConstraintEqualTo(100).Active = true;
    }

最新更新