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

时间:2013-10-01 09:55:46

标签: ios ipad ios7 uipopovercontroller xcode5

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

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

视网膜iPad模拟器:UIPopoverController

iOS 7的iPad第3代: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];

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

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

为此:

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

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

更改它并进行编译有助于理解它需要更改。

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

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

希望这会有所帮助 此致

大卫

答案 1 :(得分:0)

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

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

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