Ich schreibe eine App und muss die Ansicht ändern, wenn der Benutzer die App ansieht, während er telefoniert.
Ich habe die folgende Methode implementiert:
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
NSLog(@"viewWillAppear:");
_sv.frame = CGRectMake(0.0, 0.0, 320.0, self.view.bounds.size.height);
}
Es wird jedoch nicht aufgerufen, wenn die App wieder in den Vordergrund zurückkehrt.
Ich weiß, dass ich Folgendes implementieren kann:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(statusBarFrameChanged:) name:UIApplicationDidChangeStatusBarFrameNotification object:nil];
aber ich will das nicht tun. Ich würde viel lieber alle meine Layoutinformationen in die viewWillAppear: -Methode einfügen und diese alle möglichen Szenarien behandeln lassen.
Ich habe sogar versucht, viewWillAppear: von applicationWillEnterForeground: aufzurufen, aber ich kann anscheinend nicht genau bestimmen, welcher der aktuelle Ansichts-Controller zu diesem Zeitpunkt ist.
Kennt jemand den richtigen Weg, um damit umzugehen? Ich bin sicher, ich vermisse eine offensichtliche Lösung.
isMemberOfClass
oder verwenden isKindOfClass
, je nach Ihren Bedürfnissen.
applicationWillEnterForeground:
um festzustellen, wann Ihre Anwendung wieder in den aktiven Status eingetreten ist.