• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 应用程序在 ios 7 中更改方向时崩溃

[复制链接]
菜鸟教程小白 发表于 2022-12-11 19:35:53 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在开发一款基本上以横向模式运行的游戏。 它有一个更改个人资料图片的选项。 个人资料图片选项打开用于在个人资料图片 ImageView 上显示的图像选择器。 我的问题是

当图像选择器打开时,应用会自动将方向更改为纵向。

为了解决这个问题,我尝试在用户单击上传图像按钮时捕捉用户的方向,并在选择图像后,强制将设备方向更改为之前的方向。 在 iPhone 5 及更高版本上一切正常。但是当用户从选取器 View 中选择图像时,iphone 4(在 ios7 上运行)崩溃。我收到以下错误 -

preferredInterfaceOrientationForPresentation 必须返回受支持的界面方向!

我正在使用此代码检查用户的方向

-(void)checkCurrentDeviceOrientation
{
if([UIDevice currentDevice].orientation == 
UIDeviceOrientationLandscapeRight || [UIDevice 
currentDevice].orientation == UIDeviceOrientationLandscapeLeft )
{
self.currentOrientation = [UIDevice currentDevice].orientation;
}
else
{
self.currentOrientation = UIDeviceOrientationLandscapeRight;
}
}

并使用此代码设置方向。

 if(SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"8"))
 {
 if([UIDevice currentDevice].orientation == 
UIDeviceOrientationPortrait ||[UIDevice currentDevice].orientation == 
UIDeviceOrientationPortraitUpsideDown  )
 {

    NSLog(@"Chnaging Device Orientation to stored orientation");
    NSNumber *value = [NSNumber numberWithInt:self.currentOrientation];
    [[UIDevice currentDevice] setValue:value forKey"orientation"];
}
}
else
{
//Code For IPHONE 4
}

希望在 ios8 及更高版本上一切正常,但在运行 ios 7.0.1 的 iphone 4 上却不行

提前致谢!



Best Answer-推荐答案


我会尝试查找当前的设备方向,看看是否需要强制旋转设备。您可能还需要向您的 plist 文件添加纵向和横向功能,然后您不想自动旋转的任何屏幕都可以添加一个方法来调用。

例如,您可以在应用程序委托(delegate)中添加这样的方法,并使用可访问变量 shouldAllowRotation:

-(UIInterfaceOrientationMask)applicationUIApplication *)application supportedInterfaceOrientationsForWindowUIWindow *)window
{
    if(self.shouldAllowRotation)
        return UIInterfaceOrientationMaskAll;
    else
        return UIInterfaceOrientationMaskPortrait;
}

然后在每个 View 中你可以调用

[[AppDelegate instance] setShouldAllowRotation:NO];

取决于它是否应该旋转。当调用采摘器时,只需调用应用程序委托(delegate)并自动旋转,这将使您获得

- (BOOL)shouldAutorotate
{
    return YES;
}

- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskLandscape;
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
    return UIInterfaceOrientationLandscapeRight;
}

但是,如果您将 View Controller 推送到导航 Controller 中的其他 View Controller 堆栈,则仅需要横向将无法正常工作。您应该以模态方式显示横向约束 View Controller 。

关于ios - 应用程序在 ios 7 中更改方向时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43737226/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap