iOS 8'de Gezinme çubuğu ve yön değiştirme ile ilgili garip bir davranışım var.iOS 8: Portre görünümünde bir model görünümü denetleyicisi sunulması, temeldeki yatay gezinme denetleyicisinin gezinme çubuğunun yeniden boyutlandırılmasına neden olur.
Desteklenen arabirim yönelimini UIInterfaceOrientationMaskLandscapeRight
bildiren bir gezinme denetleyicim var. Gezinme çubuğu yatay yön için beklenen yüksekliğe sahiptir (ne yazık ki ekran görüntülerini gönderme hakkım yoktur).
Daha sonra yalnızca UIInterfaceOrientationMaskPortrait
'u destekleyen bir görünüm denetleyicisinin kalıcı bir sunumunu başlatıyorum. Sunum animasyonu başladığında, altta yatan gezinme denetleyicisinin metrikleri, bir dikey sunum olarak değiştirilir, çünkü gezinti çubuğunun yüksekliği, yukarıda gösterildiği gibi, dikey boyutuna büyür.
iOS 7 bu davranış sergiliyor. Neyi kaçırıyorum? Eski davranışı geri yüklemek istiyorum.
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
DOGButtonViewController *root = [DOGButtonViewController new];
DOGOrientedNavigationController *navi = [[DOGOrientedNavigationController alloc] initWithRootViewController:root];
navi.allowedInterfaceOrientations = UIInterfaceOrientationMaskLandscapeRight;
self.window.rootViewController = navi;
[self.window makeKeyAndVisible];
return YES;
}
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
return UIInterfaceOrientationMaskLandscapeRight | UIInterfaceOrientationMaskPortrait;
}
@end
@implementation DOGOrientedNavigationController
- (NSUInteger)supportedInterfaceOrientations
{
return self.allowedInterfaceOrientations;
}
@end
@implementation DOGButtonViewController
- (void)viewDidLoad
{
[super viewDidLoad];
self.title = @"Button View Controller";
}
- (BOOL)prefersStatusBarHidden
{
return YES;
}
- (IBAction)buttonClicked:(id)sender
{
DOGPortraitViewController *vc = [DOGPortraitViewController new];
[self presentViewController:vc animated:YES completion:nil];
}
@end
@implementation DOGPortraitViewController
- (void)viewDidLoad
{
[super viewDidLoad];
self.title = @"Portrait Title";
}
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
- (IBAction)buttonClicked:(id)sender
{
[self.presentingViewController dismissViewControllerAnimated:YES completion:nil];
}
- (BOOL)prefersStatusBarHidden
{
return YES;
}
@end
daha karmaşık bir kurulumda Ayrıca navigasyon kontrolörü bulunan bir UIWebView metni yaşamaya portre modal sunarken büyütülmüştür:
İşte yukarıdaki basit örnekte tam kodudur. Modal işten çıkarıldığında, metin orijinal boyutuna yeniden boyutlandırılmaz.
yeniden göründüğünde bu ekran görüntüsünü kaldırmak zorunda? Ben de aynı şeyi yaşıyorum –
Ne yazık ki değil, ama önümüzdeki günlerde buna bakacağım. – thewulf
Benzer sorun burada. Görünen görünüm denetleyicisi de dönüyor gibi görünüyor (olmamasına rağmen) – Carlos