gpt4 book ai didi

iphone - UIActionSheet 在横向模式下无法正常显示

转载 作者:行者123 更新时间:2023-12-03 19:27:58 26 4
gpt4 key购买 nike

我正在尝试在我的应用程序中显示 UIActionsheet。它在纵向模式下工作得很好,但当我尝试让它以横向模式显示时,它仍然从底部滑入。但是,它不再像横向模式那样使用按钮并通过选择器控件进行显示。它只是位置错误。

我不使用自动旋转并将所有内容保持为纵向模式。有时我会以横向模式显示内容,并希望操作表能够正确显示。

我正在像这样设置状态栏方向...

[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeLeft animated:NO];

当我处于“横向模式”时,状态栏始终显示正确。如果我显示 AlertView,它也会正确显示。然后我将像这样显示操作表

UIActionSheet *as = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"Cancel Button" destructiveButtonTitle:nil otherButtonTitles: @"button", nil];    
as.actionSheetStyle = UIActionSheetStyleBlackOpaque;
[as showInView:self.view];
//[as showFromToolbar:toolbar];

我还尝试从应用程序委托(delegate)和工具栏显示它。如果我在显示之前设置状态栏方向,它仍然不起作用。我什至尝试过。

[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeLeft];

有谁知道为什么操作表可能会在正确的控件下显示在错误的位置?或者如何强制操作表显示在特定位置。我宁愿不必实现我自己的操作表版本来使其正确显示。

提前致谢。

编辑/解决方案:强制操作表以横向模式显示

这是我如何让它工作的,我创建了一个横向 View 并将其添加到我的主窗口中,如下所示:

landscapeView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 480, 480)];
landscapeView.transform = CGAffineTransformMakeRotation((-1)*M_PI/2);
landscapeView.bounds = CGRectMake(0, 0, 480, 380);
[appDelegate.window addSubview:landscapeView];

然后像这样显示我的操作表

if (landscape) {
[menu showInView:landscapeView];
} else {
[menu showInView:self.view];
}

非常感谢tc。为我指明了正确的方向。

最佳答案

我也有类似的问题。我的工具栏中有一个显示操作表的按钮。显示操作表的代码位于我的 rootViewController 中。使用以下代码在横向模式下显示不正确:

[actionSheet showInView:[self.view]];

此更改纠正了问题:

[actionSheet showInView:[self.navigationController view] ];

看起来 ActionSheet 从传递到 ShowInView 的 View 中获取其方向,并且我的 rootViewController 处于纵向模式,即使我当前的 View 处于横向模式。至少,这是我的理论。

关于iphone - UIActionSheet 在横向模式下无法正常显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3693314/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com