Я реализовал настраиваемое представление оповещений из
http://iphonedevelopment.blogspot.com/2010/05/custom-alert-views.html
, но я хочу, чтобы это настраиваемое представление оповещений вращалось при изменении ориентации устройства.Когда я запускаю это приложение в первый раз в книжной ориентации симулятора iphone, ориентация настраиваемого представления оповещения происходит в горизонтальной ориентации, но когда я поворачиваю устройство в левую ориентацию, ориентация настраиваемого представления оповещения осуществляется в альбомной ориентации.Повернув устройство во многих отношениях, я обнаружил, что пользовательская ориентация оповещения соответствует позиции кнопки «Домой».
Я реализовал несколько следующих методов:
-(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");
}
но никто не был вызван ... Может кто-нибудь помочь мне понять, почему настраиваемое представление предупреждений не вращается так, как я хочу?
ОБНОВЛЕНИЕ: я реализовал метод viewWillAppear, как этот
-(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);
}
}
но условие только что выполнилось при первом запуске приложения, после этого нет условия и вызывается оператор, даже если я поворачиваю устройство много раз