2011-06-23 18 views
33

Manzara modunda oluşturulmuş bir görünümüm var (döndürmeden sonra uzun süre).
Bu görünümde, ana pencereye göre bir nokta bulmak istiyorum.
Aşağıdaki kod dikey modda çalışır, ancak landscappe'de hala portre gibi görünüyor. ÇözüldüconvertPoint: toView: yatay modda yanlış değerler verilmesi

CGPoint ptRelativeToWindow = [self convertPoint:self.bounds.origin toView:nil]; 

Bu sorunu çözdü ve sağ koordinatları verir:

[self convertPoint:self.bounds.origin toView:[UIApplication sharedApplication].keyWindow.rootViewController.view]; 
+0

Bu hatayı yeniden üretebilmemiz için özel bir yol var mı? Kodunuzu denedim ve değerleri doğru bir şekilde döndürüyordu. –

+0

iOS6'da 'çözümünüz' portre görünümünü tekrar kullanır. –

+0

Çözüm iOS7'de çalışıyor, teşekkürler. –

cevap

15

Sen göreceli koordinat hesaplamak için ana penceresini kullanamaz. Ana pencere, döndürme olaylarını alır ve bunları denetleyicilere aktarır; bu, boyutun kendisini değiştirmediği anlamına gelir (her zaman aynı portre sınırlarına sahiptir). Bu nedenle bulduğunuz çözüm mantıklıdır: Rotasyon olaylarını alan ve boyutlarını uygun şekilde değiştiren kök denetleyicinin görünümüne göre koordinatları bulursunuz

İlgili konular