Подтвердить что ты не робот

IOS - Получить расположение окна в окне?

У меня есть UIView, который отображает всплывающее окно после его нажатия. Всплывающее окно необходимо добавить к главному интерфейсу UIWindow, чтобы убедиться, что он находится поверх всего остального.

Я хочу, чтобы позиция этого всплывающего окна была относительно моего UIView, поэтому мне нужно знать относительное расположение моего UIView в окне.

Вопрос: Как найти местоположение UIView в UIWindow, когда UIView не находится непосредственно в UIWindow (он внутри представления моего viewController)?

4b9b3361

Ответ 1

Использование может использовать метод UIView covertRect: toView для преобразования в новое пространство координат. Я сделал что-то очень похожее:

// Convert the co-ordinates of the view into the window co-ordinate space
CGRect newFrame = [self convertRect:self.bounds toView:nil];

// Add this view to the main window
[self.window addSubview:self];
self.frame = newFrame;

В моем примере self - это представление, которое удаляется из своего супервизора и добавляется в окно поверх всего, где оно было. Параметр nil в toView: означает использование окна, а не определенного вида.

Надеюсь, что это поможет,

Dave

Ответ 2

Вы можете попросить .superview преобразовать origin для вас для вас

CGPoint originGlobal = [myView.superview convertPoint:myView.frame.origin 
                                               toView:nil];

Ответ 3

Использует ли UIView convertPoint: toView: не работает? Итак:

CGPoint windowPoint = [myView convertPoint:myView.bounds.origin toView:myWindow];

Ответ 4

Мне нужно было сделать это в Xamarin.iOS

Для тех, кто ищет решение там, что в конечном итоге сработало для меня:

CGRect globalRect = smallView.ConvertRectToView(smallView.Bounds, rootView);

Ответ 5

CGRect myFrame = self.superview.bounds;