IOS - Получить расположение окна в окне?
У меня есть UIView, который отображает всплывающее окно после его нажатия.
Всплывающее окно необходимо добавить к главному интерфейсу UIWindow, чтобы убедиться, что он находится поверх всего остального.
Я хочу, чтобы позиция этого всплывающего окна была относительно моего UIView, поэтому мне нужно знать относительное расположение моего UIView в окне.
Вопрос: Как найти местоположение UIView в UIWindow, когда UIView не находится непосредственно в UIWindow (он внутри представления моего viewController)?
Ответы
Ответ 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;