我尝试模拟我在Xcode 9中创建的一个非常简单的应用程序。我尝试在带有iOS 11.2的iPhone6中的iOS模拟器中模拟它。我还测试了其他具有相同结果的设备。
在真实设备上,该应用按预期工作。但在模拟器上却没有。
我希望,点击它后按钮会变成橙色。表情符号应该消失。相反,它变成了一些奇怪的“阴影”外观。如果我等待,那么按钮有时会在大约30秒后将其背景变为橙色。
我已经录制了一个gif,以说明问题所在。
http://www.giphy.com/gifs/l4pSUuBtN7aBVvbVe
更新
这是另一个GIF:http://www.giphy.com/gifs/26DNe5B0vxIO6pHiw 我一拖下信息中心,按钮就会刷新。
开发机器:Mac mini 2011,i5,SSD,8GB RAM,高Sierra
希望有人可以帮助我。更新:15.02.18 问题仅出现在从10及以上开始的iOS版本中。 使用iOS版本9.0,没有问题。期待没有任何表情符号......
与此同时,我已向苹果提交了一份错误报告。但我认为对此没有任何回应。
看起来其他人遇到同样的问题:https://forums.developer.apple.com/thread/96511
答案 0 :(得分:7)
我终于找到了解决此问题的方法!
对于没有缺口的模拟器,请在启动应用程序时进行设置:
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
Swift 4.1:
UIApplication.shared.isNetworkActivityIndicatorVisible = true
,并且永远不要将其设置回NO
。这将在状态栏中显示少量加载指示器,这将使模拟器持续处于活动状态并解决您的问题。
请不要忘记确保您不在生产配置中使用它。
在状态栏(iPhone X)上带有槽口的仿真器不会显示活动指示器,但是您可以使用“硬件”>“切换通话中的状态栏”,因为通话中的图标会发出动画,并且还会保持屏幕显示活跃。
答案 1 :(得分:1)
Found a workaround here (after looking at your link to Apple forum): https://forums.developer.apple.com/thread/88446
In Terminal:
If you have a discrete GPU in the system (eg: MBP 15" with Radeon HD 6750M):
defaults write com.apple.CoreSimulator.IndigoFramebufferServices FramebufferPerformanceHint 2
If you do NOT have a discrete GPU in the system (eg: MBP 13" or MacMini)
defaults write com.apple.CoreSimulator.IndigoFramebufferServices FramebufferEmulationHint 1
To be sure, try both options. First option helped me (although I have MBP 13" Early 2011).
答案 2 :(得分:1)
我有同样的问题,即模拟器无法更新数据库中的更改。 您可能对缓存有疑问,模拟器可能需要重置。
尝试退出iPhone Simulator,然后在终端中运行xcrun:
xcrun simctl erase all