我有一个关于 iOS 使用 安全区域 的问题。
我通过RelativeLayout 使用背景图片,并在此背景图片上显示表单。我在表单的容器上为 iOS 使用了 margin :这很好用,但是 iPhone X 上的渲染效果不是很好。
<RelativeLayout>
<Image Source="background.jpg" Opacity="0.75"
Aspect="AspectFill"
RelativeLayout.WidthConstraint =
"{ConstraintExpression Type=RelativeToParent, Property=Width}"
RelativeLayout.HeightConstraint =
"{ConstraintExpression Type=RelativeToParent, Property=Height}" />
<ScrollView RelativeLayout.WidthConstraint =
"{ConstraintExpression Type=RelativeToParent, Property=Width}"
RelativeLayout.HeightConstraint =
"{ConstraintExpression Type=RelativeToParent, Property=Height}">
<ScrollView.Margin>
<OnPlatform x:TypeArguments="Thickness">
<On Platform="iOS" Value="0, 20, 0, 0" />
</OnPlatform>
</ScrollView.Margin>
<StackLayout>
<!-- Header -->
<StackLayout VerticalOptions="Start">
<fnc:HunterHeader />
</StackLayout>
<!-- Form -->
<StackLayout VerticalOptions="CenterAndExpand"
Spacing="6" Margin="20">
<!-- ... -->
</StackLayout>
</StackLayout>
</RelativeLayout>
所以我尝试将 UseSafeArea 设置为 true,但我得到了顶部和底部边距。
是否有可能解决这个问题,并将 UseSafeArea 和背景图像结合起来?
或者有没有办法只为 iPhone X 添加特定的边距?
Best Answer-推荐答案 strong>
选项 1 - 将安全区域应用于特定控件而不是页面
安全区域可以设置在特定控件而不是整个页面上。例如,可以将安全区域值设置为 ScrollView 的边距或填充。还需要考虑方向更改(如果您的应用支持它们)。
XAML
代码隐藏
结果
根据要求,另一种选择是只使用 Page 的 BackgroundImage 属性(它不受 On().SetUseSafeArea(true) 方法)。这种方法的一个问题是 BackgroundImage 在 iOS 中是“平铺的”。要解决此问题,请创建一个不会“平铺”BackgroundImage 的自定义 Xamarin.Forms.ContentPage 渲染器。 .这是一个 example .
关于ios - Xamarin.Forms 和 iOS : how to combine UseSafeArea and a background image?,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/51553694/
|