1

2番目のビューが下から表示されてビューの中央に来る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);

}

2番目のビューのフレームを間違った場所に設定していると思います...

4

1 に答える 1

0

使用willAnimateRotationToInterfaceOrientationしましたが、使用する必要がありますdidRotateFromInterfaceOrientation

willAnimateRotationToInterfaceOrientation回転する前に方向を示します。

だからこれを使って…………

-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
    imageView.center = self.view.center;
}

これは間違いなくあなたを助けるでしょう...

幸せなコーディングをしてください......... - :)

于 2013-03-15T10:10:37.430 に答える