我有2个视图控制器:ViewControllerA和ViewCotrollerB。
ViewControllerA仅支持左/右横向。
这些是ViewControllerA.m中的一些方法:
- (BOOL)shouldAutorotate{
return YES;
}
- (NSUInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskLandscape;
}
-(UIInterfaceOrientation)preferredInterfaceOrientationForPresentation{
return UIInterfaceOrientationLandscapeRight;
}
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation{
[self settingLayoutForOrient:[[UIApplication sharedApplication] statusBarOrientation]];
}
在ViewControllerA中调用跟随代码时显示ViewControllerB:
ViewControllerB *control = [[ViewControllerB alloc] init];
[self presentViewController:control animated:NO completion:nil];
ViewControllerB支持完全方向。
这些是ViewControllerB.m中的一些方法:
- (BOOL)shouldAutorotate{
return YES;
}
- (NSUInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskAll;
}
- (void)didRotateFromInterfaceOrientation: (UIInterfaceOrientation)fromInterfaceOrientation{
[self settingLayoutForOrient:[[UIApplication sharedApplication] statusBarOrientation]];
}
请帮我回答下面的问题:
2. ViewControllerB第一次出现时,如何在ViewControllerB中获得状态栏的显示方式(纵向,portraitUpsideDown,FaceUp,FaceDown,左侧横向,右侧)?
感谢您的帮助。
答案 0 :(得分:0)
如果您使用的是故事板,则可以按照以下步骤操作。
正如你所说,你只需要在Landscape左右方向中查看viewcontrllerA,在所有方向上都需要viewcontrollerB。
为此,您可以按照以下步骤进行操作
首先创建一个UINavigationController类。将它命名为LandscapeNavigationController
创建另一个UINavigationController类。将其命名为FullNavigationController
现在在LandscapeNavigationController.m文件中写下代码。
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
LayoutRoot.MouseRightButtonDown += LayoutRoot_MouseRightButtonDown;
LayoutRoot.MouseRightButtonUp += LayoutRoot_MouseRightButtonUp;
LayoutRoot.MouseMove += LayoutRoot_MouseMove;
SetupContextMenu();
}
private void SetupContextMenu()
{
if (menu == null)
{
menu = new ContextMenu();
menu.Items.Add("test");
ContextMenuService.SetContextMenu(this, menu);
}
}
private ContextMenu menu;
private void LayoutRoot_MouseMove(object sender, MouseEventArgs e)
{
var mousePosition = e.GetPosition(this);
menu.HorizontalOffset = 100 - mousePosition.X;
menu.VerticalOffset = 100 - mousePosition.Y;
}
private void LayoutRoot_MouseRightButtonUp(object sender, MouseButtonEventArgs e)
{
menu.IsOpen = true;
}
private void LayoutRoot_MouseRightButtonDown(object sender, MouseButtonEventArgs e)
{
e.Handled = true;
}
}
现在在FullNavigationController.m文件中写下代码。
- (BOOL)shouldAutorotate
{
return NO;
}
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskLandscape;
}
现在使用NavigationController嵌入ViewControllerA,它将具有类LandscapeNavigationController和带有NavigationController的ViewControllerB,它将具有类fullNavigationController。
现在将您的初始视图控制器设置为您的一个NavigationController并运行您的程序。