【发布时间】:2018-12-03 12:05:21
【问题描述】:
我在 iPhone 上调整网格大小时遇到问题。 我订阅了事件 SizeChanged,当我旋转设备时它正在上升。 以下是我用来更改网格大小的方法:
private void MainMenu_SizeChanged(object sender, EventArgs e)
{
if (Width > Height)
{
ImageSunLogo.Margin = 0;
GridMenuItems = ChangeGridOrientation(GridMenuItems, 2, 3);
}
if (Height > Width)
{
ImageSunLogo.Margin = 20;
GridMenuItems = ChangeGridOrientation(GridMenuItems, 3, 2);
}
}
private Grid ChangeGridOrientation(Grid gridParent, int nOfRows, int nOfColumns)
{
var resultGrid = gridParent;
var parentChilds = gridParent.Children.ToList();
ClearGridRowsColsChilds(ref resultGrid);
for (int i = 0; i < nOfRows; i++)
{
resultGrid.RowDefinitions.Add(new RowDefinition());
}
for (int i = 0; i < nOfColumns; i++)
{
resultGrid.ColumnDefinitions.Add(new ColumnDefinition());
}
int currentChildIndex = 0;
for (int row = 0; row < nOfRows; row++)
{
for (int col = 0; col < nOfColumns; col++)
{
resultGrid.Children.Add(parentChilds[currentChildIndex], col, row);
currentChildIndex++;
}
}
return resultGrid;
}
private void ClearGridRowsColsChilds(ref Grid grid)
{
GridMenuItems.Children.Clear();
GridMenuItems.RowDefinitions.Clear();
GridMenuItems.ColumnDefinitions.Clear();
}
此代码在 Android 设备、iPad 上完美运行,但在 iPhone 上,通过将手机旋转到左侧(正常工作)将方向从纵向更改为横向,应用程序不会触发此事件,并且网格不会翻动。 有没有人经历过这样的事情?
【问题讨论】:
-
你检查 info.plist 中的 Landspace Left 了吗?你的 iPhone 是什么版本?
-
好吧……就是这么明显。谢谢。
-
我会把它作为答案发布,你能接受吗?
-
好的,我会标记的。
-
现在可以标记了。
标签: xamarin xamarin.forms xamarin.ios