2009-08-03 5 views

Antwort

1

Was Sie hier tun möchten, ist verwenden Sie Affine Transformationen, um Ihre Ansicht zu drehen, ich habe dies erreicht, obwohl ich nicht den Code vor mir im Moment habe. Wenn du eine einfache Drehung machst, wirst du feststellen, dass deine Ansicht abgeschnitten wird und nicht wie gewünscht in der Mitte, was du hier tun musst, ist den Anker deiner Ebene zu setzen (spiele mit dem Wert herum, bis du bekommst was du willst) Damit die Ansicht angezeigt wird, wo Sie sie haben möchten. Der Weg dorthin ist nur die achte 90-Grad-Transformationsdrehung und die Auswirkungen auf die Ansicht. Auf diese Weise sollten Sie in der Lage sein, herauszufinden, wo Sie Layer-Anker sein müssen. Ich werde später hier einen Beispielcode posten, wenn ich vor meinem Mac bin. Hoffe, es hilft

+0

Kann ich eine Ansicht mit ihr und ihrem Inhalt autoresizingMasks drehen? Und wie mache ich eine affine Transformation? – mk12

+0

Nein, du wirst nicht die Größe selbst ändern müssen, affine Transformationen in der Apple-Site nachschlagen, sie haben etwas hier http://developer.apple.com/iphone/library/documentation/GraphicsImaging/Conceptual/drawingquarz2d/dq_affine/ dq_affine.html – Daniel

+0

Ich denke, ich habe Ihre Frage über die Autoreszingmasks falsch gelesen – Daniel

1

ich din't ganz verstehen, was Sie mit

"... die autoresizingMasks mit ..."

ich das gleiche mit UIIView Animation tat. Es gibt viele andere Techniken auch dort draußen. hier ist mein Code:

-(void)rotateToLandscape 
{ 
UIWindow *win = [[UIApplication sharedApplication]keyWindow]; 
if(UIInterfaceOrientationIsPortrait(self.interfaceOrientation)){ 
    [[[UIApplication sharedApplication] keyWindow] setBackgroundColor:[UIColor blackColor]]; 
    [UIView beginAnimations:@"View Flip" context:nil]; 
    [UIView setAnimationDuration:0.3]; 
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
    win.transform = CGAffineTransformIdentity; 
    win.transform = CGAffineTransformMakeRotation(degreesToRadian(90)); 
    win.bounds = CGRectMake(0.0f, 0.0f, 480, 320); 
    win.center = CGPointMake(160.0f, 240.0f); 
    [UIView commitAnimations]; 
} 

}

// ich den Code nicht hoffen Erklärung benötigt.
// Sie können die Animationsanweisungen entfernen, um den gewünschten Effekt zu erhalten (nicht animiert).