1

Ich verwende die Einstellung des Hintergrundbilds mit der folgenden Methodik. Wenn ich mein Gerät rotiere, wiederholt sich der Hintergrund, was sinnvoll ist, weil es kein Bild ist. Wie gehe ich mit Orientierungsänderungen um, wenn ich mein Hintergrundbild so einstelle?Wie mit der Hintergrundbildausrichtung in UIView umgehen

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    UIColor *background = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"background.png"]]; 
    self.view.backgroundColor = background; 
    [background release]; 
} 

Antwort

6

Es dauerte eine Weile, um dieses Konzept zu verstehen. Ich wollte nicht das gleiche Bildportrait und die gleiche Landschaft erstellen. Der Schlüssel hier ist, dass CGAffineTransformMakeRotation rotiert aus dem ursprünglichen Zustand Ihrer UIImageView oder einer UIView für diese Angelegenheit. Dies setzt voraus, dass Ihr Hintergrundbild ausgerichtet ist. Z.B. Sie möchten, dass Ihre UIImageView beibehalten wird, während sich andere Objekte wie normale Orientierungsänderungsereignisse verhalten.

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation 
           duration:(NSTimeInterval)duration { 

    if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft) { 
     backgroundImage.transform = CGAffineTransformMakeRotation(M_PI/2); 
    } 
    else if (toInterfaceOrientation == UIInterfaceOrientationLandscapeRight){ 
     backgroundImage.transform = CGAffineTransformMakeRotation(-M_PI/2); 
    } 
    else { 
     backgroundImage.transform = CGAffineTransformMakeRotation(0.0); 
    } 
} 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    //set the UIImageView to current UIView frame 
    backgroundImage.frame = self.view.frame; 
} 
0

Wenn ich richtig verstehe, wird Ihr Hintergrund jedes Mal erstellt oder überschrieben, wenn Sie die Ausrichtung richtig ändern. Standardmäßig ist backgroundColornil. Sie können dies überprüfen, wenn es Null ist, dann gehen Sie voran und legen Sie die Werte fest. Sein mag

if (self.view.backgroundColor == nil){ 
    //set the new values here 
} 
0

Sie haben zwei Bilder nehmen sowohl für horizontale und vertikale und statt Zuweisung Sie [...: colorWithPatternImage:...]; verwenden können und es festgelegt, wenn Ausrichtung auf den Hintergrund der Ansicht geändert wird.

HAPPY iCODING ...

+0

Ich möchte vermeiden, die gleiche Bildlandschaft zu machen. Verwendet UIImageView den richtigen Weg, dies zu tun? – docchang

+1

Gibt es eine Möglichkeit, das Hintergrundbild stationär zu halten und nur den Rest meiner Benutzeroberflächen zu drehen? – docchang

+0

yeah versuchen mit Bildansicht. Es wird klappen. aber du musst den Rahmen nach Ansicht einstellen .. hoffe du hast was ich will sagen .. –