2009-12-01 26 views
7

UIView'i işleyen bir UIViewController alt sınıfım var. Viewcontroller, moda olarak sunulur (ekranın altından yukarı doğru kayar). Görünümün en üstünde bir gezinme çubuğu ekledim. Bu çubuğun bir gezinme denetleyicisi tarafından ele alınmadığını unutmayın.UINavigationBar'ı döndürme üzerine yeniden boyutlandırma

Görünüm yatay olarak döndüğünde navbarın küçültülmesini istiyorum (bir UINavigationController tarafından işlendiğinde nasıl davranacağı gibi). Bununla birlikte, otomatik düzeltme maskesini IB'de esnek yüksekliğe ayarlayamıyorum ve kod içinde bunu yapmak navbarın tamamen kaybolmasına neden oluyor.

Bunu yapmanın bir yolu var mı? UINavigationController tarafından nasıl yapılır?

P.S. Bir ölçekleme dönüşümüne başvurmamayı tercih ederim, çünkü bu başlıktaki metni dağıtacaktır.

DÜZENLEME: Küçük bir yardımla çözdüm, aşağıdaki cevabı okuyun.

cevap

1

Çözümü buldum ve geçmişte oldukça aptal hissediyorum. Sadece navbarın otomatikleştirici maskesinde esnek alt kenar boşluğu eklemek zorunda kaldım. Kredi çözümü işaret beni bu thread kullanıcı RayNewbie, kaynaklanır:

http://discussions.apple.com/thread.jspa?messageID=8295525

+0

Merhaba, navbarda düğmelerin var mı? Çünkü ben aynı sorunu yaşıyorum ve eğer navbarın otomatikleştirici maskesinde esnek alt kenar boşluğu eklediğimde navbar yeniden boyutlandırılıyor, ancak düğmeler değil. – Sefran2

+0

navBar.autoresizesSubviews = YES; 'ı eklediğinizden emin olun, ayrıca navbar düğmeleriniz için otomatik düzeltme disklerini ayarlamanız gerekebilir –

+1

Çözümünüzü gönderir misiniz? Sağladığınız bağlantı bozuk. – DCorrigan

5

Otomatikleştirici maskesini ayarlamak yerine, neden geçerli yönlendirmeyi viewWillAppear'da ve didRotateFromInterfaceOrientation öğesinde kontrol ediyor ve uygun çerçeveyi ayarlamıyorsunuz?

- (void) updateNavBar { 
    UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation]; 
    if ((UIInterfaceOrientationLandscapeLeft == orientation) || 
     (UIInterfaceOrientationLandscapeRight == orientation)) { 
     myNavBar.frame = CGRectMake(0, 0, 480, 34); 
    } else { 
     myNavBar.frame = CGRectMake(0, 0, 320, 44); 
    } 
} 
- (void) viewWillAppear { 
    [self updateNavBar]; 
    // ... SNIP ... 
} 
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation { 
    [self updateNavBar]; 
    // ... SNIP ... 
} 
+0

Bunu bir deneyin verdi ama ben istediğim şekilde hareket etmedi. daha belirgin olarak, bar düğmesi öğeleri ve başlık ölçeklenmemişti, böylece en üstteki ekran çıktı. Ayrıca, nav çubuğunun kendisi aslında ölçeklemedi, bu yüzden degrade kapalıydı. Subview'in manuel olarak yeniden boyutlandırılmasını denerim ve çalışıp çalışmadığını göreceğim ... –

+0

Alt görünümdeki farklı türlerdeki dönüşümleri kullanmayı denedim, ancak güzel görünmesini sağlayamadım. –