使用iOS7构建可生成iOS6外观小部件

在转移到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]; 

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

检查项目配置文件和目标配置文件。 它可能设置了iOS 6.X基础SDK。

为了这:

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

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

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

确保为项目配置以及运行此项目的每个目标配置文件正确配置此项。

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

希望这有助于问候

大卫

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

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

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