我可以在我的应用中将一个视图显示在横向和其他所有其他视图模式中吗?

时间:2011-12-15 01:07:51

标签: iphone objective-c ios xcode

我的iPhone应用程序目前都处于纵向模式。

但我需要在宽屏模式下播放视频,并绘制一些在纵向模式下效果最佳的ui元素。此外,屏幕上有时会输入一些文字,因此键盘也需要显示为肖像。

是否有可能告诉UIViewController何时加载它需要转到Landscape,堆栈上的父视图将是Portrait。

我不想检测用户旋转,我想决定哪些屏幕是风景画,哪些是肖像画。

所以回顾一下,我的应用程序上的everyscreen / view将是肖像,除了我想制作Landscape的那个。可以吗?

非常感谢, -code

3 个答案:

答案 0 :(得分:2)

在你的UIViewController中实现这个方法

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
BOOL result = NO;
if (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || 
             interfaceOrientation == UIInterfaceOrientationLandscapeRight) {
    result = YES;
}
return result;
}

然后返回YES以获得您想要支持的方向 这个方法在加载时会调用你的UIViewController,因此每次进入UIViewController时都不会调用它。


如果你想绝对确定所有其他UIViewController都是你想要的方向,那么也要在它们中实现这个方法。

答案 1 :(得分:1)

是的,使用[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight]];或肖像作为纵向。

答案 2 :(得分:0)

override func viewWillAppear(animated: Bool) {
    let value = UIInterfaceOrientation.LandscapeRight.rawValue
    UIDevice.currentDevice().setValue(value, forKey: "orientation")
    UIApplication.sharedApplication().statusBarHidden = true
}


override func shouldAutorotate() -> Bool {
    return true
}

并将其更改为您想要的(LandscapeRight,LandscapeLeft或Portrait)