确定UIView是否包含在屏幕边界内

时间:2015-01-14 05:58:11

标签: c# ios xamarin.ios xamarin

如果我有视图,如何确定其框架是否包含在可见屏幕内?

我目前有这个,但它非常粗略,而且根本不健壮。

var newPoint = (this.ConvertPointFromView(new PointF(newX, newY), UIApplication.SharedApplication.KeyWindow.RootViewController.View));

if (newPoint.X + _infoBox.Frame.Width > UIApplication.SharedApplication.KeyWindow.RootViewController.View.Frame.Width
    || newPoint.Y + _infoBox.Frame.Height + _glass.Frame.Height > UIApplication.SharedApplication.KeyWindow.RootViewController.View.Frame.Height)
    {
            //.....
    }

2 个答案:

答案 0 :(得分:1)

要比较一个rect是否完全位于seconf rect内,你可以使用CGRectContainsRect(rect2,rect1))函数

像这样:CGRectContainsRect([[UIScreen mainScreen] bounds],Infobox.frame)

我不是那么快速的语法,但应该很容易转换。

编辑: 使用convertRect在屏幕坐标中获取信息框。传递nil作为视图:参数。 [Infobox convertRect:infobox.bounds view:nil]

来自手机。

答案 1 :(得分:0)

您可以使用CGRectContainsPoint例程来检查rect是否在另一个rect内。

CGRect rect = yourView.frame;
BOOL flag =  CGRectContainsRect(([UIScreen mainScreen].bounds,rect);
if (flag) {
    NSLog(@"indside screen bounds");
}else{
    NSLog(@"not in screen bounds");
}

编辑:     CGRect frame = [yourView convertRect:rect fromView:nil];