0
我的應用程序僅在橫向模式下運行,但我希望在縱向模式下顯示一個視圖。所以我創建了使用Unified storyboard(Xcode 6)的項目。我的項目只運行部署信息中的目標。如何使用統一故事板(Xcode 6)限制縱向模式中的一個屏幕以及iPad中的其他橫向模式
和我的視圖控制器
我做什麼了?幫我。
我的應用程序僅在橫向模式下運行,但我希望在縱向模式下顯示一個視圖。所以我創建了使用Unified storyboard(Xcode 6)的項目。我的項目只運行部署信息中的目標。如何使用統一故事板(Xcode 6)限制縱向模式中的一個屏幕以及iPad中的其他橫向模式
和我的視圖控制器
我做什麼了?幫我。
幾周前我面臨同樣的問題。我創建了新的縱向UIViewController。後來我意識到改變方向是不夠的,然後我使用下面的代碼來改變方向。使用下面的代碼來改變方向。
-(void)viewWillAppear:(BOOL)animated
{
[self willAnimateRotationToInterfaceOrientation:[UIApplication sharedApplication].statusBarOrientation duration:.2];
[self awakeFromNib];
}
-(void)viewWillDisappear:(BOOL)animated {
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIDeviceOrientationDidChangeNotification
object:nil];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
if(is_iPad)
{
return YES;
}else
{
return (UIInterfaceOrientationIsPortrait(toInterfaceOrientation));
}
}
- (void)awakeFromNib
{
AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication]delegate];
delegate->isShowingLandscapeView=NO;
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(orientationChanged:)
name:UIDeviceOrientationDidChangeNotification
object:nil];
}
- (void)orientationChanged:(NSNotification *)notification
{
if (is_iPad) {
AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication]delegate];
UIDeviceOrientation deviceOrientation = [UIDevice currentDevice].orientation;
if (UIDeviceOrientationIsLandscape(deviceOrientation) &&
!delegate->isShowingLandscapeView)
{
yourPotraitViewController *ypvc =[[yourPotraitViewController alloc] initWithNibName:@"yourPotraitViewController" bundle:nil];
[self.navigationController pushViewController:objHomeLandscape animated:YES];
delegate->isShowingLandscapeView=YES;
// isShowingLandscapeView = YES;
}
else if (UIDeviceOrientationIsPortrait(deviceOrientation) &&
delegate->isShowingLandscapeView)
{
[self.navigationController popViewControllerAnimated:YES];
delegate->isShowingLandscapeView=NO;
}
}
}