Frage

Ich habe diesen Code in alle meine Viewcontrollers:

    UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];

    if (orientation == UIInterfaceOrientationLandscapeRight) {
        CGAffineTransform transform = self.view.transform;

        // Use the status bar frame to determine the center point of the window's content area.
        //CGRect statusBarFrame = [[UIApplication sharedApplication] statusBarFrame];
        //CGRect bounds = CGRectMake(0, 0, statusBarFrame.size.height, statusBarFrame.origin.x);
        CGPoint center = CGPointMake(320/2, 480/2);

        // Set the center point of the view to the center point of the window's content area.
        self.view.center = center;

        // Rotate the view 90 degrees around its new center point.
        transform = CGAffineTransformRotate(transform, (M_PI / 2.0));
        self.view.transform = transform;
    }   

, und ich habe auch:

 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations

    return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}

kann ich sehen, dass die Codes korrekt funktionieren, wie sie sollten, aber hin und wieder gibt es eine seltene Gelegenheit, dass die Hauptansicht-Controller für das Querformat zu drehen, scheiterten, nachdem ich seine Ansicht stellte die Hauptansicht zu sein. Die Chance, dass es auftritt, ist sehr selten, aber das ist mir nagende. Ich kann außerdem sehen, dass es immer häufiger auf dem iPhone auftritt. Auf dem Simulator, erinnerte ich es nie passieren. Wissen Sie, was die möglichen Ursachen dafür sind? Vielen Dank im Voraus.

War es hilfreich?

Lösung

fand ich die Ursache für mein iphone Programm.

Eine der möglichen Ursachen ist die Erinnerung. Diese Methode unten wird aufgerufen, wenn das System wenig Speicher ist:

- (void)didReceiveMemoryWarning {
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];

    // Release any cached data, images, etc that aren't in use.
}

Ein „unsichtbarer“ UIView entladen wird, wenn diese Methode aufgerufen wird. Wenn Sie sind wieder diese Ansicht zu sehen, nachgeladen das Gerät, aber vielleicht, weil Sie die Parameter einstellen (für die Rotation, etc.) in einem Ort, wo es nicht in Anspruch genommen werden, wenn es neu geladen wird. Sie können verwendet werden:

- (void)viewDidLoad {

    UIApplication* application = [UIApplication sharedApplication];
    application.statusBarOrientation = UIInterfaceOrientationLandscapeRight;

    CGAffineTransform landscapeTransform = CGAffineTransformMakeRotation([MyMath radd:90]);
    landscapeTransform = CGAffineTransformTranslate (landscapeTransform, -80, 83);

    [self.view setTransform: landscapeTransform];
    [super viewDidLoad];
}

Es tritt in dem Gerät wegen wir Realspeicher auf dem realen Gerät sprechen. Sie können „Hardware> Simulieren Speicher Warnung“ verwenden, wenn Sie den Simulator verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top