方向在ios6中不起作用

方向在ios6中不起作用

本文介绍了方向在ios6中不起作用?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在ios6的Orientation中遇到问题.相同的代码适用于ios5或5.1. 我已经按照ios6标准使用了- (BOOL) shouldAutorotate and -(NSInteger)supportedInterfaceOrientations.但是仍然没有调用"willRotateToInterfaceOrientation"和"didRotateToInterfaceOrientation".

I am having problem in Orientation for ios6. same code is working fine for ios5 or 5.1. I have used - (BOOL) shouldAutorotate and -(NSInteger)supportedInterfaceOrientations as per the ios6 standard. But still "willRotateToInterfaceOrientation" and "didRotateToInterfaceOrientation" is not getting called.

这是我的代码:-

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{

    if (!UIInterfaceOrientationIsPortrait(lastOrientation) || !UIInterfaceOrientationIsPortrait(toInterfaceOrientation))
    if (!UIInterfaceOrientationIsLandscape(lastOrientation) || !UIInterfaceOrientationIsLandscape(toInterfaceOrientation))
    {

        CGRect frame;
        int viewAlpha;
        lastOrientation = toInterfaceOrientation;

        if (toInterfaceOrientation == UIInterfaceOrientationPortrait || toInterfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)
        {

            [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];

            viewAlpha = 1;
            [MovieControlContainerLandscape setHidden:YES];


            if (isDauntless) {
                [self.navigationController setNavigationBarHidden:NO animated:YES];
            } else {
                [self.navigationController setNavigationBarHidden:NO];
            }


            frame = iPad ? CGRectMake(0, 88, 768, 432) : CGRectMake(0, 88, 320, 180);
            [movieContainer removeGestureRecognizer:toggleMediaControl];


        }
        else
        {
            [PromptToBuy dismissWithClickedButtonIndex:0 animated:YES];

            [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];

            viewAlpha = 0;
            [MovieControlContainerLandscape.layer setCornerRadius:22];
            [MovieControlContainerLandscape.subviews.lastObject addSubview:[MediaControls use]];


            if (isDauntless) {
                [self.navigationController setNavigationBarHidden:YES animated:YES];
            } else {
                [self.navigationController setNavigationBarHidden:YES];
            }


            frame = iPad ? CGRectMake(0, 0, 1024, 768) : CGRectMake(0, 0, 480, 320);

            [movieContainer addGestureRecognizer:toggleMediaControl];

            if (isDauntless) {
                [UIView beginAnimations:nil context:nil];
                [UIView setAnimationDuration:0.6];
            }

            if(TSFullScreen)
            {
                [movieContainer setAlpha:1];
            }

            if (isDauntless) {
                [UIView commitAnimations];
            }

        }

        [viewContainer setAlpha:viewAlpha];

        // Size the overlay view for the current orientation.
        [movieContainer setFrame:frame];

    }

}


/* Sent to the view controller after the user interface rotates. */
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{

    if (!UIInterfaceOrientationIsPortrait(lastOrientation) || !UIInterfaceOrientationIsPortrait(fromInterfaceOrientation))
    if (!UIInterfaceOrientationIsLandscape(lastOrientation) || !UIInterfaceOrientationIsLandscape(fromInterfaceOrientation))
    {

        float duration = .5;

        if (fromInterfaceOrientation == UIInterfaceOrientationPortrait || fromInterfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)
        {

            if (isDauntless) {
                [UIView transitionWithView:movieContainer duration:duration options:UIViewAnimationOptionTransitionNone animations:^{

                    /* Move movie view to parent center. */
                    [self.moviePlayerController.view setCenter:movieContainer.center];

                } completion:^(BOOL finished) {

                    [UIView beginAnimations:nil context:NULL];
                    [UIView setAnimationDuration:duration];
                    CGRect frame = movieContainer.frame;
                    /* Size movie view to fit parent view. */
                    frame.origin.y = 0;
                    [self.moviePlayerController.view setFrame:frame];
                    [UIView commitAnimations];

                    CGPoint center = CGPointMake(movieContainer.center.x, -50);
                    [MovieControlContainerLandscape setTag:0];
                    [MovieControlContainerLandscape setHidden:NO];
                    [MovieControlContainerLandscape setCenter:center];

                    [self toggleMovieController];

                }];

            } else {

                CGRect frame = movieContainer.frame;
                /* Size movie view to fit parent view. */
                frame.origin.y = 0;
                [self.moviePlayerController.view setFrame:frame];

                CGPoint center = CGPointMake(movieContainer.center.x, -50);
                [MovieControlContainerLandscape setTag:0];
                [MovieControlContainerLandscape setHidden:NO];
                [MovieControlContainerLandscape setCenter:center];

                [self toggleMovieController];

            }


        }
        else
        {

            if (!isDauntless) {
                [MovieControlContainer setFrame:CGRectMake(0, 44, 768, 68)];
            }

            [MovieControlContainer addSubview:[MediaControls use]];

            //NSLog(@"MovieControlContainer is %@, MovieControlContainer subviews: %@",MovieControlContainer,[MovieControlContainer subviews]);


            if (isDauntless) {
                [UIView beginAnimations:nil context:NULL];
                [UIView setAnimationDuration:duration];
            }

            if(TSFullScreen){
                [movieContainer setAlpha:0];
            }

            CGRect frame = movieContainer.frame;
            /* Size movie view to fit parent view. */
            frame.origin.y = 0;
            [self.moviePlayerController.view setFrame:frame];

            if (isDauntless) {
                [UIView commitAnimations];
            }

        }

    }

}



- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{

        return !mediaTypeIsAudio && isOrientationSupported;

}



//----supported method for ios6--------//


- (BOOL) shouldAutorotate
{
    return YES;
}




-(NSInteger)supportedInterfaceOrientations{

    NSInteger mask = 0;
    if ([self shouldAutorotateToInterfaceOrientation: UIInterfaceOrientationLandscapeRight])
        mask |= UIInterfaceOrientationMaskLandscapeRight;
    if ([self shouldAutorotateToInterfaceOrientation: UIInterfaceOrientationLandscapeLeft])
        mask |= UIInterfaceOrientationMaskLandscapeLeft;
    if ([self shouldAutorotateToInterfaceOrientation: UIInterfaceOrientationPortrait])
        mask |= UIInterfaceOrientationMaskPortrait;
    if ([self shouldAutorotateToInterfaceOrientation: UIInterfaceOrientationPortraitUpsideDown])
        mask |= UIInterfaceOrientationMaskPortraitUpsideDown;
    return mask;

}

//i have set the rootviewcontroller in appdelegate file
 self.navigationController = [[UINavigationController alloc] initWithRootViewController:masterViewController];
    self.window.rootViewController = self.navigationController.

请帮助我解决此问题.我无法找到解决方案.谢谢预先!!

Please help me to take out from this problem. I am not able to find the solution for this.Thanks in Advance !!.

推荐答案

ios6中,您必须将此方法用于 vieworientation

In ios6 you have to use this method for vieworientation

-(BOOL)shouldAutorotate
{
    return YES;
}
-(NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskAll;
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
    return UIInterfaceOrientationMaskAll;
}

并检查我的答案链接

这篇关于方向在ios6中不起作用?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-02 21:32