无法在 iPhone 6.0 模拟器 Retina 4 英寸上全屏启动我的应用程序
Posted
技术标签:
【中文标题】无法在 iPhone 6.0 模拟器 Retina 4 英寸上全屏启动我的应用程序【英文标题】:Unable to start my application in full screen on iPhone 6.0 Simulator Retina 4 Inch 【发布时间】:2012-09-12 14:19:59 【问题描述】:我已将 Default-568h@2x.png 添加到我的项目并在项目设置中进行设置,我还为我的视图和元素设置了 autoresizing options最初在我的应用程序上加载的视图,它是仅限横向的,但是在 ios 6.0 Simulator Retina 4 英寸中运行我的应用程序后,我看到我的应用程序一直向左移动,在右侧留下黑色像素区域。
知道除了这些事情之外我应该做什么才能看到我的应用程序在 iOS 6.0 模拟器 Retina 4 英寸上以“全屏”运行?
[编辑 #1:AppDelegate]
我还像这样编辑了我的 AppDelegate.m:
viewControllerMain = [[ViewControllerMain alloc] init];
//[window addSubview:viewControllerMain.view];
window.rootViewController = viewControllerMain;
[编辑#2:编辑框架]
我设法实现了全屏模式,但它无法正常工作。我认为这样做:
CGRect frame = CGRectMake([UIScreen mainScreen].bounds.origin.x, [UIScreen mainScreen].bounds.origin.y, [UIScreen mainScreen].bounds.size.height, [UIScreen mainScreen].bounds.size.width);
self.frame = frame;
这只会让我的视图全屏显示,但我一开始提到的右侧黑色区域已死并且在该区域无法进行用户交互(我那里有 UIButton,它不会对触摸做出反应)。所以基本上,我所做的只是让我的视图以全分辨率显示,但视图元素的功能仅限于我的应用程序最初在 Retina 4 英寸模拟器上启动时显示的区域。
[编辑 #3:在 XIB 文件中更改 UIView 的大小]
我什至尝试在我的 XIB 文件中更改 UIView 的实际大小,将它们全部调整为 Regina 4 全屏,但仍然 - 一样。
[编辑#4:改变窗口对象的大小]
我尝试在 AppDelegate.m 中更改窗口对象的大小,但还是没有运气。这是 AppDelegate.m 的外观。
application.statusBarOrientation = UIInterfaceOrientationLandscapeRight;
mainViewController = [[MainViewController alloc] init];
window.rootViewController = mainViewController;
// Override point for customization after application launch
[window setFrame:[UIScreen mainScreen].bounds];
[window makeKeyAndVisible];
[编辑#5:“解决方案”]
到目前为止,我做了以下工作:在 IB 中,我制作了具有 iPhone 5 分辨率大小的新 UIView,分配了相同的所有者类,这些所有者类正在处理为 iPhone 5 之前的分辨率制作的等效 UIView,并且在我需要加载其中一些 UIView 的代码中我检查 [UIScreen mainScreen].borders 以确定哪个设备当前正在运行我的应用程序。通过这种方式,我设法让事情顺利进行。
但是,主要问题仍然存在 - 为什么在我完成我提到的所有这些事情之后,我的所有 UIView 都没有自动拉伸到新的分辨率?
无论如何,赏金活动会持续 5 或 6 天。如果有人设法解决这个问题,我将不胜感激。如果没有,我会赏金给@onegray,因为那是我一开始没有处理的事情,而在我当前的实现中它非常重要。
最好的问候。
[编辑 #6:MainWindow.xib 启动时全屏选项]
正如@user1702985 所建议的,我将这个选项ON 设为取消选择。但是没有运气。
当我启动我的应用程序时,我会在 2 秒内显示一个 View 和一个 UIImageView。如果我正确设置 Autosize 属性,则此 UIView 将在 iPhone 5 模拟器上全屏显示。但。之后,我有了第二个 UIView,其中包含垂直 UIScrollView、作为页眉和页脚的 UIViews 和一个 UIButton,我还为这些元素设置了所有自动调整大小选项,但这个 UIView 以 iPhone 4 的分辨率显示。它真的很奇怪,我仍然不知道它是什么。
[编辑 #7:设置的自动调整大小选项]
为我的所有 UIView 及其元素设置了此自动调整大小选项。
[编辑 #8:启动时全屏选项的说明]
MainWindow.xib 属性。
【问题讨论】:
我所做的是添加了一个 4 英寸的启动屏幕。 选项 8 对我有用.. 谢谢。 【参考方案1】:如何将主 viewController 添加到窗口中? iOS6 不再支持仅将视图添加为子视图。
这是我博客上关于使应用程序在 iPhone 5 屏幕尺寸上运行的文章中的一个例外。
使用 window.rootViewController 添加您的初始视图
首先,如果您在代码中构建初始视图,请确保使用 window.rootViewController 将初始视图添加到窗口,而不是简单地将视图添加为子视图的旧方法。 如果您不这样做,那么在 iOS 6 下,您的应用将根本无法自动旋转。
这是一个例子:
navigationController = [[UINavigationController alloc] initWithRootViewController: myRootVC];
//[window addSubview:[navigationController view]]; Don't do this!
window.rootViewController = navigationController; // Do this instead!
更多信息请访问http://pervasivecode.blogspot.co.uk/2012/09/making-apps-work-on-iphone-5-screen-size.html
【讨论】:
抱歉没有提及。我制作了#edit 1 来回答您的问题。我评论了第 2 行并从编辑 #1 添加了第 3 行。【参考方案2】:确保关键窗口大小合适。解决方法是设置适当的框架:[window setFrame:[[UIScreen mainScreen] bounds]]
。
更新:
如果没有源代码,很难猜测问题出在哪里。
我创建了simple app stub to test interface orientation for iPhone4/iPhone5。我刚刚创建了新的“单视图应用程序”,在根视图中添加了一些子视图,并添加了“默认”图像。我是在 Xcode 4.3.2 中完成的,没有 Xcode 4.5.
的任何额外功能,并且应用程序会自动将其屏幕拉伸到适当的大小(对于 portrait/landscape
方向)。
【讨论】:
感谢您的建议。请看一下编辑#4。我做了你告诉我的事,事实上,当我后来检查窗口边框时,我得到了 320x568,但是我在 XIB 文件中制作的 UIView 以横向模式显示,因此在右侧我有黑色像素区域和 UIView 显示iPhone 4 分辨率 (320x480)。 也感谢您的更新。我试过了,是的,它完美无缺。我做了同样的事情,对其进行了测试并像魅力一样工作。删除-添加 Default-568h@2x.png 在此项目中禁用-启用对 iPhone 5 分辨率的支持,但我真的不知道我的应用程序有什么不同,实际上没有任何帮助。我有一个包含 MainWindow.xib 的应用程序,但我在启动时也设置了全屏,但没有任何改变。 我不知道该选项的代码,但是可以选择在 IB 中检查 MainWindow.xib UIWindow。检查编辑 #8 以获得解释。【参考方案3】:无论我做什么,我都无法让我的应用全屏显示。
但是在我将文件“Default-568@2x.png”添加到我的应用程序之后。现在所有 xib 的运行全屏。 您可以通过在 XCode 中创建一个新应用程序并复制创建的黑色 png 来快速测试这一点。
【讨论】:
感谢您的回答。我做了同样的事情。我在启动中的应用程序无法全屏运行,然后我添加了“Default-568@2x.png”,它也没有工作。 :) 我用我在 XCode 4.3.3 中编写并针对 iOS 5 的一些简单应用程序添加了这个 png 的方法进行了测试。对于这些应用程序,它就像魅力一样。但是对于这个最初为 iOS 4 和早期版本的 XCode 编写的应用程序 - 那东西不起作用,我不知道为什么。 还有一个很棒的技巧,在某些情况下确实对我有用。谢谢。【参考方案4】:我遇到了同样的问题,即部分屏幕没有响应用户交互。在 MainWindow.xib 上选择“启动时全屏”选项为我修复了它。
【讨论】:
我完全忘记了这个选项,它没有针对我的情况进行检查。但它仍然不能解决我的问题。检查我的编辑#6。不过感谢您的回答!【参考方案5】:通过长按删除模拟器上的应用程序并重新运行。
这对我有用,经过 4 英寸视网膜调整。一切都按照我在 IB 中拼接的方式自动调整大小。
【讨论】:
感谢您的回答。我这样做了几十次。我从模拟器中删除它,我什至直接从模拟器存储应用程序文件的磁盘中删除它,我也尝试从管理器中删除派生数据,但没有运气。我在启动时只包含一个 UIImageView 的第一个屏幕被拉伸到全屏,但第二个包含 UIScrollView、页眉和页脚的 UIView、一些 UIButton 和 UIWebView 的屏幕没有被拉伸。我对两个 UIView 上的元素执行了相同的自动调整大小方法。 您是否缝合了子视图并相应地设置了它们的自动调整大小掩码? 我已将每个视图和元素的自动调整大小掩码设置为 UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight。检查编辑#7以检查我是否正确执行。我做了从 IB 到自动调整大小的所有事情。由于我在iOS开发方面没有那么丰富的经验,你能解释一下你在“缝合子视图”下指的是什么吗?谢谢。【参考方案6】:我希望这会对你有所帮助但不确定你是否会在全屏时获得触摸效果, 因此,您必须检查您的应用程序是否完全接触。
第 1 步:从图中显示的导航中单击“项目”,然后单击丢失的文件
第 2 步:在第二张图片中点击添加
现在运行项目,您的项目将在 iPhone 5 全屏或模拟器中运行。!
【讨论】:
以下解决了我的问题。我很困惑为什么添加缺少的初始屏幕图像会改变应用程序的显示大小。这没有任何意义。 手动添加图像并没有这样做,按照屏幕截图并单击警告就可以了。谢谢 这对我有用!我迁移到资产,但没有 Splash Image。这对我来说是个问题。 这对我有用。我刚刚删除了laucher屏幕,应用程序没有进入全屏。这是正确的答案。 @sabir 你来得正好【参考方案7】:你试过了吗?
iOS 模拟器 > 硬件 > 设备 > iPhone(视网膜 4 英寸)
我遇到了同样的问题,我就是这样解决的。
【讨论】:
【参考方案8】:如果你使用 XCode 6.1,试试这个解决方案(对于没有完整图像集的项目):
-
项目 -> 目标 -> 常规 -> 应用程序图标和启动图像 -> 启动屏幕文件
为第一个屏幕选择 xib。
【讨论】:
【参考方案9】:请为应用程序添加启动屏幕。
【讨论】:
【参考方案10】:在 iOS 8 上测试时,我们在 iOS 6 天创建的应用遇到了类似问题。
我们的解决方法是在 MainWindow.xib 上设置“隐藏”标志。
这就是我们发现 here 修复的方式。
【讨论】:
【参考方案11】:同样的事情发生在我身上。我试图制作一个视频闪屏,由于我无法控制显示闪屏的时间,因此无法显示完整的视频,我不得不制作一个假的闪屏,这只是一个控制器先显示后删除。无论我尝试什么,该控制器的视图都没有显示为全屏。最后,我发现它正在发生,因为我没有启动图像。
解决方案:在你的项目中添加启动画面(即使它们只是黑色图像),并且应该修复全屏问题。
【讨论】:
以上是关于无法在 iPhone 6.0 模拟器 Retina 4 英寸上全屏启动我的应用程序的主要内容,如果未能解决你的问题,请参考以下文章
Retina iPhone 无法使用响应式 Twitter Bootstrap
对于配备 Retina 显示屏的 Mac Book Pro,Android 模拟器无法缩放到 100%
如何让 WebView 在 iPhone/iPad Retina 中工作