从仅横向视图返回到纵向应用程序

时间:2012-10-05 08:10:05

标签: iphone ios video streaming orientation

我有一个仅在纵向模式下工作的应用程序,但是,有一个视图需要同时支持纵向和横向模式。无论何时我从这个视图返回,应用程序的其余部分都会搞乱。

需要支持两种方向的视图包含用于播放实时流的webview。

简单设置shouldAutorotateToInterfaceOrientation不起作用。提出模态视图控制器的技巧。删除和插入根视图的技巧也不起作用。

我害怕使用[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationPortrait](实际上有效),因为它是私有api。

4 个答案:

答案 0 :(得分:0)

我的应用程序全部以纵向方式工作,只有一个全屏照片视图支持横向方向。所以我以模态方式和我的FullscreenViewController.m

呈现这个全屏视图
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return ([[UIApplication sharedApplication] statusBarOrientation]);
}

希望这可能有用

答案 1 :(得分:0)

实际上,删除和插入此处提到的窗口视图的第一个视图的方法确实有效! iOS portrait only app returns from UIWebview youtube in landscape

我只是因为某种原因不需要在窗口子视图中询问第一个视图。我需要自己提供root视图。

所以我的解决方案是在支持两种方向的视图控制器中实现以下方法:

-(void)viewWillAppear:(BOOL)animated
{
    m_b_avoid_landscape_orinetation = NO;

    [super viewWillAppear:animated];
}

-(void)viewWillDisappear:(BOOL)animated
{
    m_b_avoid_landscape_orinetation = YES;

    UIWindow *window = [[UIApplication sharedApplication] keyWindow];
    [[self getTabBar].view removeFromSuperview];
    [window addSubview:[self getTabBar].view];

    [super viewWillDisappear:animated];
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation 
{
    if (m_b_avoid_landscape_orinetation)
        return (toInterfaceOrientation == UIInterfaceOrientationPortrait);
    else
        return YES;
}

[self getTabBar]提供我的自定义标签栏,作为窗口子视图中的第一个视图。

编辑因此,对于iOS 6,它不再起作用了。我使用解决方案插入和删除模式对话框,如其他地方提到的新的supportedInterfaceOrientations方法。

-(void)goBack
{
    m_b_avoid_landscpae_orinetation = YES;

    UIViewController *viewController = [[UIViewController alloc] init];
    UIWindow *window = [[UIApplication sharedApplication] keyWindow];
    [window.rootViewController presentViewController:viewController animated:NO completion:^{
        [viewController dismissModalViewControllerAnimated:NO];
    }];

    [self.navigationController popViewControllerAnimated:YES];
}

-(NSUInteger)supportedInterfaceOrientations
{
    if (m_b_avoid_landscpae_orinetation)
        return UIInterfaceOrientationMaskPortrait;

    return UIInterfaceOrientationMaskAllButUpsideDown;
}

答案 2 :(得分:0)

您可以在[[UIDevice currentDevice] setOrientation:orientation]viewWillAppear:中使用viewDidAppear:来强制应用轮播到所需的方向。但是,那个私人电话,并不确定Apple是否会批准你的应用程序:)(我的批准)。祝你好运!

答案 3 :(得分:0)

select * from person where (firstName like 
'%$stringVariable%' OR lastName like '%$stringVariable');