在我的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?如果它是正确的值,我可以乘以宽度并获得正确的屏幕分辨率。
答案 0 :(得分:0)
为什么ContentPage.Scale总是1?如果它是正确的值,我可以乘以宽度并获得正确的屏幕分辨率。
这是一种误解。物理像素中的宽度和高度不,请参见此处
Apple iPhone和iPad设备继续以点为单位工作
和
Android类似。程序员以密度无关像素(dps)为单位工作
在两个系统中,160个单位相当于一英寸(或64个单位转换为1厘米)。