【发布时间】:2015-10-27 12:03:21
【问题描述】:
我正在使用Xamarin labs in my Xamarin Forms 项目,它有一个类,您可以使用它来请求有关应用所在的运行设备的信息。
就我而言,我想知道设备屏幕的当前宽度。
为此,您需要在 iOS appdelegate 中连接 IDisplay 接口,以便您可以在表单代码中使用它。
所以在我的表单代码中,我通过请求 Resolver.Resolve<IDevice>.Display.Width 或 Resolver.Resolve<IDevice>.Display.XDpi 来获得宽度
现在在 iPhone 6 模拟器上运行时,宽度为 750,XDpi 为 326。 我现在要做的是使用这两个值之一来调整屏幕上的图像大小,以便它们具有屏幕的确切宽度。
var image = new Image (){ Source = "img1.jpg", WidthRequest = _display.Width });
我将它们显示在 ExtendedScrollView 中
<StackLayout>
<controlsXLabs:ExtendedScrollView x:Name="ImageScrollView"
Orientation="Horizontal"
AnimateScroll="true"
Scrolled="OnScrolled">
<StackLayout x:Name="DiscoverImagesStackLayout" Orientation="Horizontal" />
</controlsXLabs:ExtendedScrollView>
<Button Text="Click me" Clicked="OnButtonClicked" />
</StackLayout>
但我现在面临的问题是使用 Width ( 750 ) 太大(视网膜缩放?)而使用 XDpi 太小!
换句话说,我如何获得可以用来匹配图像宽度的实际屏幕宽度? 还是我做错了什么?
添加截图,第一个是大,第二个是小(参考屏幕大小)
【问题讨论】:
-
好吧@Rohit 那篇文章解释了我在我的问题中解释的同样的事情。换句话说,使用 IDevice.Display 属性来检索实际值。那部分有效。我的问题是,当我使用该信息更改这些图像的宽度时,为什么我的图像没有正确显示...
-
那是因为它是 Xamarin.Forms WidthRequest 而不是约束。您可能必须创建一个自定义图像渲染器并覆盖 OnSizeRequest
标签: c# ios xamarin xamarin.forms