Frage

Ich habe einen einfachen UIViewController, die eine XIB für seine Schnittstelle verwendet.

Als solche umfasst die Schnittstelle einfach eine UIView, ein UIActivityIndicator und eine UILabel. Ich habe die Dimensionierung Einschränkungen im Interface Builder stellen Sie die Aktivitätsanzeige zu halten und das Etikett zentriert, wenn die Ansicht dreht.

Die UIViewController gesetzt JA für Hoch- und Querformat in der -shouldAutorotateToInterfaceOrientation: Methode zurückzukehren.

Die Ansicht auf die Ansichtshierarchie hinzugefügt werden manuell, mit

if (!activityOverlay)
    activityOverlay = [[XBActivityOverlayViewController alloc] initWithNibName:@"XBActivityOverlayViewController" bundle:nil message:@"Connecting..."];

[activityOverlay.view setAlpha:0.0f];
[self.window addSubview:activityOverlay.view];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.3f];
[activityOverlay.view setAlpha:0.9f];
[UIView commitAnimations];

Das Problem, das ich habe, ist, dass, wenn das Gerät bereits im Querformat ist und der Blick ist an dieser Stelle der Hierarchie hinzugefügt, wobei die Ansicht immer noch im Hochformat ist, und nicht automatisch drehen.

Was muß ich tun, um die Ansicht in der gleichen Ausrichtung wie die übergeordneten Ansicht hinzufügen?

War es hilfreich?

Lösung

Ich weiß nicht, ob es die richtige Antwort auf Ihre Frage, aber ich hoffe, hilft gerne weiter:

Für mich jedes Mal wenn ich hinzufügen / modal entlassen oder eine neue Ansicht angezeigt wird, wird die folgende Funktion aufgerufen:

-(void) detectOrientation 
{


 if (([[UIDevice currentDevice] orientation] == UIDeviceOrientationLandscapeLeft) || 
     ([[UIDevice currentDevice] orientation] == UIDeviceOrientationLandscapeRight)) 
 {

             item1.frame = CGRectMake(147.0, 241.0, 56.0, 28.0);
     item2.frame = CGRectMake(265.0, 241.0, 56.0, 28.0);

 }
 else if (([[UIDevice currentDevice] orientation] == UIDeviceOrientationPortrait) ||
          ([[UIDevice currentDevice] orientation] == UIDeviceOrientationPortraitUpsideDown) || !inLandscapeOrientation)
 {

    item1.frame = CGRectMake(35.0, 425.0, 35.0, 28.0);
item2.frame = CGRectMake(176.0, 425.0, 35.0, 28.0);
 }

}

Hier ändern Sie die Position entsprechend der aktuellen Ausrichtung des Geräts. Vielleicht, wenn Sie, dass die aktuelle Ausrichtung erkennen ist Landschaft fügen Sie eine Subview, die eine solche Orientierung hat.

Alejandra:)

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