确定 UIView 是否包含在屏幕边界内
Determine if UIView is contained within screens bounds
如果我有视图,如何确定其框架是否包含在可见屏幕内?
我目前有这个,但它非常粗略,一点也不健壮。
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)
{
//.....
}
您可以使用 CGRectContainsPoint 例程来检查一个矩形是否在另一个矩形内。
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];
要比较一个 rect 是否完全在 seconf rect 内,您可以使用 CGRectContainsRect(rect2, rect1)) 函数
像这样:CGRectContainsRect([ [UIScreen mainScreen] bounds], Infobox.frame)
我不太喜欢 swift 语法,但应该很容易转换。
编辑:
使用 convertRect 获取屏幕坐标中的信息框。传递 nil 作为 view: 参数。
[信息框 convertRect: infobox.bounds view:nil]
来自手机。
如果我有视图,如何确定其框架是否包含在可见屏幕内?
我目前有这个,但它非常粗略,一点也不健壮。
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)
{
//.....
}
您可以使用 CGRectContainsPoint 例程来检查一个矩形是否在另一个矩形内。
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];
要比较一个 rect 是否完全在 seconf rect 内,您可以使用 CGRectContainsRect(rect2, rect1)) 函数
像这样:CGRectContainsRect([ [UIScreen mainScreen] bounds], Infobox.frame)
我不太喜欢 swift 语法,但应该很容易转换。
编辑: 使用 convertRect 获取屏幕坐标中的信息框。传递 nil 作为 view: 参数。 [信息框 convertRect: infobox.bounds view:nil]
来自手机。