背景图片PCL xamarin构成iOS放大

时间:2017-07-10 14:24:58

标签: c# ios xamarin xamarin.ios xamarin.forms

我目前正在开发Xamarin表格中的PCL项目,并开始研究iOS实现,因为我完成了Android操作。我遇到的问题是我的视图的背景图像被放大(就像工具栏上的图标一样)。它可能使用全尺寸图像,所以我希望使用像Aspect=Aspect.AspectFit这样的东西但是从那以后我正在使用我使用Background= Height>Width ? <picture_string_portrait> : <picture_string_landscape>的PCL代码,它需要一个字符串。我似乎无法弄清楚如何修复此问题+我只能共享默认代码,因为这是我目前正在为之工作的公司(所以我也不担心屏幕)。

这是我的pcl代码(myview.xaml.cs)的一部分,它在加载和方向更改时命中。在Android中,它可以很好地扩展,但在iOS中却没有。

private void OnSizeChanged(object sender, EventArgs eventArgs)
{

     BackgroundImage = Height > Width ? "background_portrait.jpg" : "background_landscape.jpg";

 }

如果这是一个菜鸟问题我道歉但我已经完成了我的谷歌分享,似乎找不到任何有用的东西。对所有人都有效的PCL解决方案将不胜感激。

提前致谢!

1 个答案:

答案 0 :(得分:1)

ContentPage.BackgroundImage的问题在于您无法控制它的宽高比。看到设备如何具有各种尺寸和形状,替代解决方案可能会更好地为您服务。您可以使用Image中的ContentPage并使用其Aspect来实现相同的结果。一种方法是AbsoluteLayout这样:

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="Sample">
    <AbsoluteLayout VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand">
        <Image AbsoluteLayout.LayoutFlags="All" AbsoluteLayout.LayoutBounds="0, 0, 1, 1" Source="background.png" Aspect="AspectFill"/>
        <StackLayout AbsoluteLayout.LayoutFlags="All" AbsoluteLayout.LayoutBounds="0, 0, 1, 1">
            // Content
        </StackLayout>                   
    </AbsoluteLayout>             
</ContentPage>

另一个与此示例中的RelativeLayout类似:

http://dotnetbyexample.blogspot.nl/2015/02/using-full-size-none-stretched.html