我正在努力使用以下代码片段将 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;
}