クリックするとポップアップが表示されるUIViewがあります。メインUIWindowにポップアップを追加して、他のすべての上に表示されるようにする必要があります。
このポップアップの位置をUIViewに対して相対的にしたいので、ウィンドウ内のUIViewの相対位置を知る必要があります。
質問:UIViewがUIWindow内に直接ない場合(viewControllerのビュー内にある場合)、UIWindow内のUIViewの場所を見つけるにはどうすればよいですか?
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はsuperViewから削除され、それがあった場所の上部のウィンドウに追加されるビューです。 toView:のnilパラメーターは、特定のビューではなくウィンドウを使用することを意味します。
お役に立てれば、
デイブ
.superview
はあなたのためにあなたのためにあなたのOrigin
を変換します
CGPoint originGlobal = [myView.superview convertPoint:myView.frame.Origin
toView:nil];
UIViewのconvertPoint:toView:は機能しませんか?そう:
CGPoint windowPoint = [myView convertPoint:myView.bounds.Origin toView:myWindow];
Xamarin.iOSでこれを行う必要がありました
そこで解決策を探している人にとって、最終的に私にとってうまくいったのは:
CGRect globalRect = smallView.ConvertRectToView(smallView.Bounds, rootView);
Xamarin.iOS実装の下で私のために働いた。
CGRect GetRectAsPerWindow(UIView view)
{
var window = UIApplication.SharedApplication.KeyWindow;
return view.Superview.ConvertRectToView(view.Frame, window);
}
Windowに関してフレームが必要なビューを渡します。