UIView Анимация не работает в ландшафтном режиме
Я использую анимацию UIView, где второй вид появляется снизу и подходит к центру вида. Но он не работает в ландшафтном режиме, хотя мое приложение поддерживает ландшафтный режим, и я реализовал метод "willAnimateRotationToInterfaceOrientation:toInterfaceOrientation". Вот мой код:
-(void) viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
self.view.backgroundColor = [UIColor blackColor];
imageView= [[UIImageView alloc] initWithFrame:CGRectMake(0, 499, 320, 0)];
imageView.image = [UIImage imageNamed:@"trans.png"];
[imageView setClipsToBounds:YES];
[imageView setContentMode:UIViewContentModeBottom];
[self.view addSubview:imageView];
[UIView animateWithDuration:1.0f
delay:0.5f
options:UIViewAnimationOptionCurveEaseOut
animations:^(void) {
imageView.frame = CGRectMake(0, 92, 320, 320);
}
completion:NULL];
}
-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{
CGRect screen = [[UIScreen mainScreen] bounds];
float pos_y, pos_x;
pos_y = UIDeviceOrientationIsLandscape([[UIDevice currentDevice] orientation]) ? screen.size.width/2 : screen.size.height/2;
pos_x = UIDeviceOrientationIsLandscape([[UIDevice currentDevice] orientation]) ? screen.size.height/2 : screen.size.width/2;
imageView.center = CGPointMake(pos_x, pos_y);
}
Я полагаю, что я устанавливаю кадр второго вида в неправильном месте...
1 ответ
Вы использовали willAnimateRotationToInterfaceOrientation
но вы должны использовать didRotateFromInterfaceOrientation
,
willAnimateRotationToInterfaceOrientation
даст вам ориентацию перед вращением.
Так что используйте это..........
-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
imageView.center = self.view.center;
}
Это определенно поможет вам...
Удачного кодирования........................... -:)