Xamarin 中的 ViewBox还有其他选择,我可以保持图像的宽高比吗?
我正在将我的Windows Phone应用程序转换为Xamarin Forms。我的大多数屏幕都有可点击的图像,我可以捕捉图像部分的X Y坐标。我将所有图像都放在 ViewBox 中以保持其宽高比,这样我就可以得到与图像相同的x y位置,而与屏幕尺寸/分辨率无关。
我愿意使用 Xamarin.IOS 中的任何本机控件执行此操作。
答案 0 :(得分:0)
不幸的是,Xamain.forms中的BoxView与WP中的名称不同。
你需要的是RelativeLayout这有点复杂但灵活。当应用程序在不同大小的屏幕上运行时,控件将根据您的约束适应它们。
例如:
<RelativeLayout>
<Image BackgroundColor="Red" Source="Icon-76.png" Aspect="Fill" x:Name="redBox"
RelativeLayout.XConstraint="{ConstraintExpression
Type=RelativeToParent,
Property=Width,
Factor=0.05,
Constant=0}"
RelativeLayout.YConstraint="{ConstraintExpression
Type=RelativeToParent,
Property=Y,
Factor=1,
Constant=20}"
RelativeLayout.WidthConstraint="{ConstraintExpression
Type=RelativeToParent,
Property=Width,
Factor=.6,
Constant=0}"
RelativeLayout.HeightConstraint="{ConstraintExpression
Type=RelativeToParent,
Property=Height,
Factor=.6,
Constant=0}" />
</RelativeLayout>
RelativeLayout.XConstraint 和 RelativeLayout.YConstraint 找到控件的X,Y坐标。
RelativeLayout.WidthConstraint 和 RelativeLayout.HeightConstraint 用于向控件添加宽度/高度约束。
该图像中的(x,y)是((父宽度的5%),20),它相对于父母。它的宽度或高度是父母的60%。当然,您可以通过类型和 ElementName 将其设置为相对于其他视图,如下所示:
RelativeLayout.XConstraint="{ConstraintExpression
Type=RelativeToView,
ElementName=redBox,
Property=Width,
Factor=1,
Constant=0}"
<强> ConstraintExpression:强>
类型 - 约束是相对于父项还是相对于另一个视图。
属性 - 使用哪个属性作为约束的基础。
因素 - 要应用于属性值的因素。
常量 - 用作值的偏移量的值。
ElementName - 约束相对于的视图的名称。
您可以设置 Aspect 以查找适合您图片的显示。
<Image Source="Icon-76.png" Aspect="Fill"/>
AspectFill 缩放图像以填充视图。某些部分可能会被剪裁以填充视图。
AspectFit 缩放图片以适合视图。有些部分可能留空(字母装箱)。
填充缩放图像,使其完全填满视图。 X和Y中的缩放可能不一致。