2011-08-11 31 views
29

Tıklandığında bir pop-up görüntüleyen bir UIView var. Ana UIWindow'a, her şeyin üstüne gittiğinden emin olmak için açılır pencerenin eklenmesi gerekir.iOS - Pencerenin bir görünümünün konumunu aldınız mı?

Bu açılır pencerenin konumunu UIView'ime göre görmek istiyorum, bu yüzden UIView öğesinin pencerede göreceli konumunu bilmem gerekiyor.

Soru: UIView doğrudan UIWindow'da değilken (UIWindow'unda bir UIWindow konumunda bir UIView'in yerini nasıl bulabilirim (viewController'ımın görünümü içinde)?

cevap

58

Kullanım Yeni koordinat alanına dönüştürmek için UGiew yöntemi covertRect: toView öğesini kullanabilirsiniz.

Benim örnekte
// 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; 

, kendini onun Superview çıkarılır ve nerede olduğunu üstünden penceresine ekleniyor bir görünümdür: Ben çok benzer bir şey yaptı. ToView öğesindeki nil parametresi: belirli bir görünüm yerine pencereyi kullanmanız anlamına gelir. Bu yardımcı olur

Umut,

Dave

+0

Başar, bu – aryaxt

+0

Mükemmel çalıştı. İhtiyaç duyarsanız, eşgüdüm alanlarına ve bunlardan dönüştürmek için bu türden bir çok yöntem vardır. –

+1

Bu, görünüm UIScrollView – AntiMoron

-6
CGRect myFrame = self.superview.bounds; 
8

mu UIView en convertPoint: bileti görüntüleyebilir: çalışmıyor? Yani:

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

Sen

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

için sizin için origin dönüştürmek için .superview sorabilirsiniz Bir çözüm arayan Xamarin.iOS herkes için

bunu yapmanın gerekli Orada, nihayet benim için işe yarayan şey:

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