2010-11-26 15 views
1

i était d'implémenter une alerte personnalisée devue personnalisée d'alerte ne tourne pas à la rotation de l'appareil

http://iphonedevelopment.blogspot.com/2010/05/custom-alert-views.html

mais je veux que cela soit rotate vue personnalisée d'alerte lorsque le changement d'orientation de l'appareil. Lorsque je lance cette application pour la première fois en orientation portrait du simulateur d'iphone, l'orientation de la vue d'alerte personnalisée est le paysage, mais lorsque je fais pivoter l'appareil dans le paysage gauche, l'orientation de la vue d'alerte personnalisée est paysage. Après avoir fait tourner l'appareil à bien des égards, je l'ai trouvé que l'orientation personnalisée d'alerte est de suivre fonction de la position du bouton d'accueil ..

i est de mettre en œuvre cette plusieurs méthodes:

-(void) willAnimateSecondHalfOfRotationFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation duration:(NSTimeInterval)duration { 
NSLog(@"kkksksksk");  

}

-(void) willAnimateFirstHalfOfRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{ 
NSLog(@"aaa"); 

}

-(void) willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{ 
NSLog(@"bbb"); 

}

-(void) willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{ 
NSLog(@"bbb"); 

}

-(void) willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{ 
NSLog(@"ccc"); 

}

-(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation{ 
return YES; 
NSLog(@"shouldAutorotateToInterfaceOrientation"); 

}

mais personne n'a été appelé ... quelqu'un peut me aider à travailler pourquoi l'affichage des alertes personnalisées ne sont pas tournant comme je veux?

MISE À JOUR: i est de mettre en œuvre la méthode viewWillAppear comme celui-ci

-(void)viewWillAppear:(BOOL)animated { 

UIInterfaceOrientation toOrientation = self.interfaceOrientation; 
if(toOrientation == UIInterfaceOrientationPortrait){ 
    CGAffineTransform affine = CGAffineTransformMakeRotation (M_PI * 180/180.0f); 
    NSLog(@"vwa : portrait upside down"); 

    [self.alertView setTransform:affine]; 
    [self.backgroundView setTransform:affine]; 

    //[self.view setTransform:affine]; 
    self.view.center = CGPointMake(160, 240); 
    NSLog(@"affine : %f", affine); 

}else if(toOrientation == UIInterfaceOrientationPortraitUpsideDown){ 
    CGAffineTransform affine = CGAffineTransformMakeRotation (0.0); 

    NSLog(@"vwa : Portrait "); 

    [self.alertView setTransform:affine]; 
    [self.backgroundView setTransform:affine]; 
    self.view.center = CGPointMake(160, 240); 
    NSLog(@"affine : %f", affine); 
}else if(toOrientation == UIInterfaceOrientationLandscapeLeft){ 
    CGAffineTransform affine = CGAffineTransformMakeRotation (M_PI * 270/180.0f); 

    [self.alertView setTransform:affine]; 
    [self.backgroundView setTransform:affine]; 
    self.view.center = CGPointMake(160, 240); 

    NSLog(@"vwa : landscpae left"); 

    NSLog(@"affine : %f", affine); 
}else{ 
    CGAffineTransform affine = CGAffineTransformMakeRotation (M_PI * 90/180.0f); 
    [self.alertView setTransform:affine]; 
    [self.backgroundView setTransform:affine]; 
    self.view.center = CGPointMake(160, 240); 

    NSLog(@"vwa : landscape right"); 
    NSLog(@"affine : %f", affine); 
} 

}

mais la condition juste remplie à la première fois le lancement de l'application, après cela, il ne sommes condition et déclaration appelé même je fais tourner le périphérique plusieurs fois

+1

Vous devez formater votre code ... – esqew

+0

ce que vous entendez par « Vous devez formater votre code »? Je suis désolé, je ne comprends pas –

+0

Ce support Web un format de code pour les codes, vous devez utiliser ce format. Et vous pouvez vérifier le résultat édité en bas. – AechoLiu

Répondre

0

UIView ne peut pas accepter les messages de délégué de UIViewController. Vous devez donc vous inscrire en tant qu'observateur pour recevoir la notification UIDeviceOrientationDidChangeNotification.

+0

Je suis désolé..je ne comprends pas comment m'inscrire en tant qu'observateur, pouvez-vous le décrire? –

+0

toro ... vouliez-vous vous inscrire en tant qu'observateur comme la réponse sur ce http://stackoverflow.com/questions/3829756/about-the-orientation-of-iphone ?? c'est à vous? :) –

+0

toro .... votre lien aide vraiment ... merci beaucoup ... C'EST FAIT !!!!! Yatta ... –