2015-01-14 4 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 rect, вы можете использовать функцию CGRectContainsRect (rect2, rect1)) – iKatalan

+0

@iKatalan ok, но затем я предполагаю, что они должны будут находиться в том же пространстве. Я имею в виду, как я могу получить размеры представления относительно экрана –

+0

@DavidPilkington, вы когда-нибудь заставляли его работать на C# (Xamarin)? Я вижу, что нижеприведенные решения не являются C#, а Xamarin не предлагает CGRectContainsRect. –

ответ

1

Для сравнения, если один прямоугольник полностью внутри seconf Прямоугольника вы можете использовать CGRectContainsRect (, rect2 rect1) функция)

Как это: CGRectContainsRect ([[UIScreen] В начале ограничивающих], Infobox.frame)

Я не так в быстрый синтаксис, но это должно быть легко конвертировать.

Редактировать: Используйте convertRect, чтобы получить инфобокс в координатах экрана. Передача nil как аргумент view:. [Infobox convertRect: infobox.bounds просмотр: nil]

с мобильного.

0

Вы можете использовать процедуру 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 рамы = [yourView convertRect: Rect fromView: ноль];

+0

Другая проблема заключается в том, что мне нужно получить ответ на вид в отношении размеров экранов. Как я могу это сделать? –

+0

@DavidPilkington читает разницу между свойствами bounds и frame и пытается получить прямоугольник, например, из свойства центра. –

Смежные вопросы