Pau*_*ues 14 c# windows-phone monogame uwp
在下面你会看到一个在Windows Phone 8.1中运行的屏幕.两者都声称视口宽度和高度为800x480但是从图像中可以看出635的导航按钮与游戏区域重叠.
我已经检查了GraphicsDevice.Adapter和GraphicsDevice.Viewport中的各种属性,但它们都是一样的!
屏幕在C#UWP Monogame代码中运行.我将PrefferedBackBufferWidth和Height设置为480x800.
如何判断导航按钮是否占据屏幕的一部分?
Ahm*_*med 12
我会进一步扩展答案.
在Windows Phone 8.1中,您有两个ApplicationViewBoundsMode枚举值.
要使用app ApplicationViewBoundsMode.UseVisible选项,请在Windows.Current.Activate();之前在app.xaml.cs中添加以下内容:
#if WINDOWS_PHONE_APP
ApplicationView.GetForCurrentView().SetDesiredBoundsMode(ApplicationViewBoundsMode.UseVisible);
#endif
Run Code Online (Sandbox Code Playgroud)
要使用app ApplicationViewBoundsMode.UseCoreWindow选项,请在app.xaml.cs中添加以下内容Windows.Current.Activate();
#if WINDOWS_PHONE_APP
ApplicationView.GetForCurrentView().SetDesiredBoundsMode(ApplicationViewBoundsMode.UseCoreWindow);
#endif
Run Code Online (Sandbox Code Playgroud)
在某些情况下,开发人员可能希望使用UserCoreWindow选项在应用栏下显示内容,但作为副作用导航软按钮会遮挡部分页面以解决问题,请按照下一个解决方案进行操作.
您可以在WindowsPhone中侦听ApplicationView.GetForCurrentView().VisibleBoundsChanged 并更新页面的边距.
下面是一个文章上解决这个问题写了Joost的面包车(并且你可以使用现成的行为)
从上面的链接引用问题解释
如果应用程序视图绑定模式在App.Xaml.cs中设置为ApplicationViewBoundsMode.UseCoreWindow,则手机会报告整个屏幕大小 - 不仅是顶部状态栏和底部应用程序栏通常采用的部分,还包括按钮栏使用的部分.
并从他的解决方案的片段,他更新页边距
void KeepInViewBehaviorVisibleBoundsChanged(ApplicationView sender, object args)
{
UpdateBottomMargin();
}
private void UpdateBottomMargin()
{
if (WindowHeight > 0.01)
{
var currentMargins = AssociatedObject.Margin;
var newMargin = new Thickness(
currentMargins.Left, currentMargins.Top, currentMargins.Right,
originalBottomMargin +
(WindowHeight - ApplicationView.GetForCurrentView().VisibleBounds.Bottom));
AssociatedObject.Margin = newMargin;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3648 次 |
| 最近记录: |