Wie kann ich mich programmgesteuert im iPad orientieren?

  • Ich mache eine iPad-App. In dieser App verwende ich die Tabellensicht in DetailViewController, in der ich die Logik hinzugefügt habe, dass meine Tabellenzelle ihre Höhe basierend auf dem Inhalt anpassen wird. Der Inhalt wird als Beschriftung erstellt und dann in die Tabellensichtzelle eingefügt. Ich habe die Breite des Etiketts auf 680px eingestellt. Im Hochformat funktionierte es richtig, aber im Querformat muss ich 615px einstellen.

    Wie kann ich das in welcher Ausrichtung meines iPads erhalten und dann mit der if-Anweisung die Etikettenbreite einstellen .

    Ich habe CGFloat width = CGRectGetWidth(self.view.bounds); verwendet, um die Breite in viewWillAppear zu erhalten. Wenn jedoch meine App im Hochformat ausgeführt wird, wird sie im Hochformat Breite angeben Ich bekomme keine Weite. Bitte geben Sie an, wo ich die obige Linie platzieren kann, um die Breite im Hoch- und Querformat jederzeit zu bestimmen, oder ob es andere Möglichkeiten gibt, dies zu erhalten.

    22 November 2011
    Victor
2 answers
  •  - (void) willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
        [self adjustViewsForOrientation:toInterfaceOrientation];
    }
    
    - (void) adjustViewsForOrientation:(UIInterfaceOrientation)orientation {
        if (orientation == UIInterfaceOrientationLandscapeLeft || orientation == UIInterfaceOrientationLandscapeRight) {
            titleImageView.center = CGPointMake(235.0f, 42.0f);
            subtitleImageView.center = CGPointMake(355.0f, 70.0f);
            ...
        }
        else if (orientation == UIInterfaceOrientationPortrait || orientation == UIInterfaceOrientationPortraitUpsideDown) {
            titleImageView.center = CGPointMake(160.0f, 52.0f);
            subtitleImageView.center = CGPointMake(275.0f, 80.0f);
            ...
        }
    }
     
    22 November 2011
    SimplyKiwi
  • Verwenden Sie statusBarOrientation, da sich manchmal die Ausrichtung des Geräts ändern kann, die Statusleiste jedoch nicht (z. B. wenn das Gerät auf einem Schreibtisch leer ist).

     if (UIInterfaceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation))
    {
        adjWidth = 480.0;
    }
    else
    {
        adjWidth = 320.0;
    }
     
    22 November 2011
    Alan Zeino