2010-07-27 18 views
5

Uygulamamın kök görüntüleme denetleyicisi herhangi bir yönlendirmeyi destekler, ancak kullanıcı yalnızca yatay yönlendirmeyi destekleyen başka bir görünüm denetleyicisine gidebilir. Temel sorun şu ki, aygıtın gerçek fiziksel yönelimi ne olursa olsun, kullanıcı kök görüntüleme denetleyicisine geri döndüğünde, gezinti çubuğunun yatay mod için uygun bir yüksekliğe sahip olması gerekir. Üste | Gezinme çubuğunun 32 (yatay yükseklik) yerine 44 (dikey yükseklik) olarak görünmesini nasıl sağladığımı öğrenmek istiyorum.iPhone gezinme çubuğu yüksekliği dikey yönde kısa kalır

Gezinme çubuğu uygun yüksekliğe ayarlanmamış olsa da, kök görünüm denetleyicisinin UITableView'ı doğru bir şekilde ofset (ekranın üstünden 44 piksel). İkinci görüş kontrolörün -viewWillAppear İçinde

: Ben rotasyonel standart dönüşümü gerçekleştirin:

if (deviceOrientation == UIDeviceOrientationPortrait) 
    { 
    UIScreen *screen = [UIScreen mainScreen]; 
    CGFloat screenWidth = screen.bounds.size.width; 
    CGFloat screenHeight = screen.bounds.size.height; 
    UIView *navView = [[self navigationController] view]; 
    navView.bounds = CGRectMake(0, 0, screenHeight, screenWidth); 
    navView.transform = CGAffineTransformIdentity; 
    navView.transform = CGAffineTransformMakeRotation(degreesToRadians(90)); 
    navView.center = CGPointMake(screenWidth/2.0, screenHeight/2.0); 
    [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight]; 
    } 

bu ikincil görünüm denetleyicisi alt görünüm denetleyicileri için navigasyon izin verdiğinden (yanı sıra geri kök görünümü denetleyicisi haşhaş), Ben -viewWillDisappear için aşağıdaki ekledik:

if (deviceOrientation == UIDeviceOrientationPortrait) 
    { 
    UIScreen *screen = [UIScreen mainScreen]; 
    CGFloat screenWidth = screen.bounds.size.width; 
    CGFloat screenHeight = screen.bounds.size.height; 
    UIView *navView = [[self navigationController] view]; 
    navView.bounds = CGRectMake(0, 0, screenWidth, screenHeight); 
    navView.transform = CGAffineTransformIdentity; 
    navView.center = CGPointMake(screenWidth/2.0, screenHeight/2.0); 
    [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait]; 
    } 

Teşekkür gezinti çubuğu yüksekliğinin yeniden hesaplamaya konusunda herhangi bir tavsiye için. Orada daha iyi bir yol, ama bu çalıştı eğer

cevap

8

emin değil:

[[self navigationController] setNavigationBarHidden:YES animated:NO]; 
[[self navigationController] popViewControllerAnimated:YES]; 
[[self navigationController] setNavigationBarHidden:NO animated:NO]; 

Temelde, gez çubuğu gizlemek, görünüm denetleyicisi ve gösteri nav çubuğu pop. Bazı kodlar bir yerlerde nav çubuk yüksekliğini ayarlar ve her şey yolunda.

+0

Mükemmel teşekkürler, ios6'da tekrar çalışabilmemin tek yolu – AlexWien

+0

ios10 nedir? Bu sorunu yaşadım ve çözüm çalışmıyor. – Slavcho

+0

@Slavcho. Afedersiniz. Benim bir cevabım yok. Bir süredir iOS üzerinde çalışmıyorum. – westsider