如果我有视图,如何确定其框架是否包含在可见屏幕内?
我目前有这个,但它非常粗略,而且根本不健壮。
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 :(得分: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];