Xamarin.Forms Page.Width SizeChanged

时间:2017-11-14 23:36:14

标签: xamarin.ios xamarin.forms

在我的ContentPage(占据整个屏幕)中,我按如下方式设置SizeChanged事件:

private void init()
{
    EventHandler orientation_update_handler = (object sender, System.EventArgs e) =>
    {
        var binding_context = BindingContext as MyViewModel;
        binding_context?.OnOrientationChanged(Width, Height, Scale);
    };
    SizeChanged += orientation_update_handler;
    orientation_update_handler.Invoke(null, null);
    // other event handler setup...

尝试在orientation_update_handler内设置一个断点但是没有被击中...... 无论如何;在OnOrientationChanged中设置断点。它接收的宽度和高度都是它们实际的一半,而且比例似乎总是为1.

但是,在我的应用代表的FinishedLaunching功能中,虽然UIScreen.MainScreen.Bounds.Width似乎总是与ContentPage.Width相同,但另一方面UIScreen.MainScreen.Scale不同到ContentPage.Scale并将UIScreen.MainScreen.Bounds.Width乘以UIScreen.MainScreen.Scale可以得到设备的正确屏幕分辨率。

为什么ContentPage.Scale总是1?如果它是正确的值,我可以乘以宽度并获得正确的屏幕分辨率。

1 个答案:

答案 0 :(得分:0)

  

为什么ContentPage.Scale总是1?如果它是正确的值,我可以乘以宽度并获得正确的屏幕分辨率。

这是一种误解。物理像素中的宽度和高度,请参见此处

  

Apple iPhone和iPad设备继续以点为单位工作

  

Android类似。程序员以密度无关像素(dps)为单位工作

在两个系统中,160个单位相当于一英寸(或64个单位转换为1厘米)。