2

在迁移到 XCode 5 和 iOS7 基础 SDK 之后,我的应用程序中的一些 UI 小部件在 iOS7 设备上仍然看起来像 iOS6 样式(渐变、框架)。这不会发生在 iOS7 的等效模拟器上。这也不会发生在所有小部件上,UIDocumentInteractionController 的弹出窗口在设备上看起来像 iOS7,但 UIPopoverController 不会。用于重命名文件的键盘也显示了模拟器和设备之间的这种差异。

iOS如何确定UI元素的视觉风格?它是基于静态链接库还是在运行时确定的?我已经尝试完全从设备中清除应用程序,但没有任何变化。

视网膜 iPad 模拟器:UIPopoverController

装有 iOS 7 的第三代 iPad:UIPopoverController

这种情况下的代码相当简单,没有自定义渲染或布局。

self.poController = [[UIPopoverController alloc] initWithContentViewController:audioCopyController];
[audioCopyController showDoneButton:NO];
audioCopyController.view.frame = CGRectMake(0,0,350,250);
_poController.popoverContentSize = audioCopyController.view.bounds.size;
_poController.delegate = self;
[_poController presentPopoverFromRect:view.audiocopyButton.frame
                                           inView:view
                         permittedArrowDirections:UIPopoverArrowDirectionDown
                                         animated:YES];

我在这里先向您的帮助表示感谢。

4

2 回答 2

1

检查您的项目配置文件和目标配置文件。它可能是使用 iOS 6.X 基础 SDK 设置的。

为了这:

  • 转到 Xcode 5 中的项目配置文件
  • 单击构建设置选项卡
  • 编辑基本 SDK 字段以将其切换到 iOS 7。

有时,我们遇到了 Xcode 没有考虑当前设置的问题。

更改和编译有助于它了解需要更改它。

确保为您的项目配置以及您从中运行的每个目标配置文件正确配置它。

对于模拟器和您的设备,您可能有 2 个不同的目标。

希望这有助于问候

大卫

于 2013-10-01T12:47:13.210 回答
0

好的,我发现了问题所在。大卫的建议让我思考。

我同时维护多个应用程序,其中一个很旧。XCode5 中的新 Interface Builder 打破了旧应用程序中许多字段的透明度,因此我将 XCode4 保存在 XCode5 旁边的单独安装文件夹中。似乎不知何故我的 XCode5 项目仍然指向 XCode4 的 SDK 文件夹(不确定这是怎么可能的,查看实际的链接器命令行可能会有所启发),所以从我的机器上删除 XCode4 的 6.1 SDK 文件夹后,一个使用 XCode 5 的干净构建在我支持 iOS 的应用程序中生成了正确的 iOS 7 外观小部件。

这个故事的寓意是,在同一台机器上安装多个 XCode/SDK 时要非常小心。希望这可以帮助其他可能正在尝试类似方法为遗留应用程序提供支持的人。

于 2013-10-02T07:38:17.707 回答