我在Xamarin中创建了一个带有矩形的自定义控件。 我在我的pcl。
中为矩形高度提供了一个可绑定属性当我在Android和iOS中通过此高度时,Android设备(运行KitKat的Nexus 5)和iOS(运行iOS8.4的iPhone 5)的高度不同。
我知道有密度和屏幕分辨率,DPI和PT这样的概念,但我不知道当我在iOS和Android中传递100作为矩形的高度时会发生什么。
它是否将其视为DPI / PT?如果没有,我怎么能实现这个目标?
编辑:
是Xamarin Forms代码。
便携式项目中包含自定义控件和BindableProperty,数据类型为int,名为RectHeight
。
然后在Android和iOS的customrenderer中,在OnElementChangedProperty方法中,我编写的代码为Android中的Rect
和iOS中的CGRect
分配高度。
修改
我希望在自定义控件中将维度提供为int,然后将值放在Android和iOS中,使得无论屏幕分辨率或密度如何,两个操作系统中的高度都相同。这就是为什么提到DPI和PT
答案 0 :(得分:1)
查看XLabs上的IDisplay实现。您可以从IDevice实现中获取实例。这将为您提供运行时显示属性,并提供扩展方法,例如从英寸获取表单高度/宽度请求值。我为此目的编写了它们,以确保在需要时我得到精确的尺寸。
有关示例,请参阅Xamarin Forum thread。
您可以使用源代码或从NuGet安装XLabs.Forms包。出于您的目的,您很可能会使用XDpi和YDpi属性来计算本机值。如果您不需要任何其他XLabs的东西,那么我建议将一些例程(特别是iOS的东西,因为Android和& WP在运行时更容易确定)复制到您的代码作为扩展名。