gpt4 book ai didi

ios - io6 允许基于某些条件的界面方向

转载 作者:行者123 更新时间:2023-12-01 18:19:53 24 4
gpt4 key购买 nike

我有一个标志,用户将从设置中设置它。如果设置为否,则仅允许纵向。如果标志为 YES,那么纵向和横向都将被允许。
在 ios 5 及更低版本中

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation{
//[image_signature setImage:[self resizeImage:image_signature.image]];
if(flag == YES)
return (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft || toInterfaceOrientation == UIInterfaceOrientationLandscapeRight || toInterfaceOrientation == UIInterfaceOrientationPortrait);
else
return (toInterfaceOrientation == UIInterfaceOrientationPortrait);
}

但在 ios 6 及更高版本中,不推荐使用上述方法。
我在尝试
-(BOOL)shouldAutorotate 
- (NSUInteger)supportedInterfaceOrientations

但没有成功。
请帮我。

编辑
我试过这个。
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
NSLog(@"preferredInterfaceOrientationForPresentation");
return UIInterfaceOrientationMaskPortrait;
}

- (NSUInteger)supportedInterfaceOrientations
{
NSLog(@"supportedInterfaceOrientations");
return UIInterfaceOrientationMaskPortrait;
}

但只有 supportedInterfaceOrientations 只被调用一次。当我改变模拟器的方向时,两种方法都没有调用。

最佳答案

shouldAutorotateToInterfaceOrientation:
Returns a Boolean value indicating whether the view controller supports the specified orientation.
(Deprecated in iOS 6.0. Override the supportedInterfaceOrientations and preferredInterfaceOrientationForPresentation methods instead.)

( http://developer.apple.com/library/ios/documentation/uikit/reference/UIViewController_Class/DeprecationAppendix/AppendixADeprecatedAPI.html)

因此,您可以在较新版本中使用的两种方法是:
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation

http://developer.apple.com/library/ios/documentation/uikit/reference/UIViewController_Class/Reference/Reference.html#//apple_ref/occ/instm/UIViewController/preferredInterfaceOrientationForPresentation


- (NSUInteger)supportedInterfaceOrientations

此方法使用以下位 口罩 :
UIInterfaceOrientationMaskPortrait

UIInterfaceOrientationMaskLandscapeLeft

UIInterfaceOrientationMaskLandscapeRight

UIInterfaceOrientationMaskPortraitUpsideDown

UIInterfaceOrientationMaskLandscape

UIInterfaceOrientationMaskAll

UIInterfaceOrientationMaskAllButUpsideDown

http://developer.apple.com/library/ios/documentation/uikit/reference/UIViewController_Class/Reference/Reference.html#//apple_ref/occ/instm/UIViewController/supportedInterfaceOrientations

更新:

好的,我不确定为什么它不适合你。

我刚刚创建了一个演示应用程序来复制您正在尝试做的事情:

( 使用右键单击 > 复制图像 url 并在新的浏览器选项卡中打开以查看更大的图片 )

project setup

当方向标志为 NO 时,按钮文本显示“Landscape Denied”,并且在模拟器中旋转设备不会导致界面旋转,如预期的那样:

Landscape Denied

然而,在单击按钮以允许横向方向后,旋转模拟器设备实际上会改变界面的方向,如预期的那样:

enter image description here

您在另一个 Root View Controller 中没有任何其他方向委托(delegate)方法覆盖当前 View Controller 的方向委托(delegate)方法,对吗?

另外,我不知道使用自动布局是否会干扰,我倾向于不使用它。在我的 XIB 文件的 View 中,我选择了“ View ”对象,然后在检查器中,我 取消勾选Use Auto Layout”。我上面的示例项目屏幕截图没有使用自动布局。

更新 2:

好吧,我找到了这个解决方案,它使用导航 Controller 作为窗口的 Root View Controller ( 把它放在你的 AppDelegate.m 中):
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
NSUInteger orientations =UIInterfaceOrientationMaskAllButUpsideDown;

if(self.window.rootViewController)
{
UIViewController *presentedViewController = [[(UINavigationController *)self.window.rootViewController viewControllers] lastObject];
orientations = [presentedViewController supportedInterfaceOrientations];
}
return orientations;
}

在这个 Stackoverflow 帖子中:

iOS 6 AutoRotate In UiNavigationController

带有导航 Controller 的新屏幕截图:

enter image description here

enter image description here

关于ios - io6 允许基于某些条件的界面方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18313340/

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