2015-01-14 24 views
0

如果我有视图,如何确定其帧是否包含在可见屏幕内?确定UIView是否包含在屏幕范围内

我目前有这个,但它是非常粗略,不健壮的。

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) 
    { 
      //..... 
    } 
+0

为了比较一个矩形是否完全位于一个seconf矩形内,您可以使用CGRectContainsRect(rect2,rect1))函数 – iKatalan

+0

@iKatalan确定,但我认为它们需要在相同的空间中。我的意思是,我怎样才能获得与屏幕相关的视图尺寸 –

+0

@DavidPilkington,你是否曾经用C#(Xamarin)工作过?我看到下面的解决方案不是C#,Xamarin不提供CGRectContainsRect。 –

回答

1

比较,如果一个矩形是完全一个seconf内矩形您可以使用CGRectContainsRect(RECT2,Rect1的))功能

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

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

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

来自手机。

0

您可以使用CGRectContainsPoint例程来检查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帧= [yourView convertRect:RECT fromView:无];

+0

另一个问题是我需要根据屏幕尺寸获取视图的矩形。我怎样才能做到这一点? –

+0

@DavidPilkington读取边界和框架属性之间的区别,并尝试获取矩形,如从中心属性视图。 –

相关问题