我正在尝试检测两个Xamarin之间的冲突。窗体控件(BoxViews),但是我找不到一种方法。我有一个按钮,它的作用是减少BoxView的TranslationY,直到它与另一个BoxView碰撞为止。我记得用WinForms可以用IntersectsWith来完成,但是显然这里不起作用,我现在有这个:
func_get_args()
但这是行不通的,它永远不会检测到两个BoxView之间的冲突。
答案 0 :(得分:0)
应用翻译后,边界不会更新。
来自docs:
边界是在布局周期中通过调用Layout(矩形)来分配的。
我会尝试
以下是未经测试的示例:
var pjRectOne = new Rectangle(pjOne.X + pjOne.TranslationX, pjOne.Y + pjOne.TranslationY, pjOne.Width, pjOne.Height);
var pjRectTwo = new Rectangle(pjTwo.X + pjTwo.TranslationX, pjTwo.Y + pjTwo.TranslationY, pjTwo.Width, pjTwo.Height);
if (pjRectOne.IntercectsWith(pjRectTwo))
{
}
注意:如果pjOne或pjTwo是视图的子级,则它们的X和Y位置将相对于父级。要获得绝对的X和Y,请loop through all their parents通过执行类似的操作
var y = pjOne.Y;
var parent = pjOne.ParentView;
while (parent != null)
{
y += parent.Y;
parent = parent.ParentView;
}
希望这对您有所帮助:)