iOS 项目适用于 iPhone,但不适用于模拟器

Posted

技术标签:

【中文标题】iOS 项目适用于 iPhone,但不适用于模拟器【英文标题】:iOS project works on iPhone but not in simulator 【发布时间】:2015-01-16 23:18:31 【问题描述】:

你好,

我的 ios 项目支持横向并在我的 iPhone 4s 7.1.2 上完美运行,但不能在模拟器中运行。

这里有一些截图:

iPhone Landscape

Simulator Landscape

两个屏幕截图都是在横向模式下拍摄的,模拟器似乎没有正确调整板子的大小

这里是我用来改变方向的代码。

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration 

if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft || toInterfaceOrientation == UIInterfaceOrientationLandscapeRight)
    [UIView animateWithDuration:duration animations:^

        [[UIApplication sharedApplication] setStatusBarHidden:YES];

        int width = [[UIScreen mainScreen] bounds].size.width - [[UIApplication sharedApplication] statusBarFrame].size.width - 10;
        int height = width;

        int x = 5;
        int y = ([[UIScreen mainScreen] bounds].size.width / 2) - (width / 2);

        [board setFrame:CGRectMake(x, y, width, height)];
    ];

else 
    [UIView animateWithDuration:duration animations:^

        [[UIApplication sharedApplication] setStatusBarHidden:NO];
        [board setFrame:CGRectMake(0, [UIApplication sharedApplication].statusBarFrame.size.height, [[UIScreen mainScreen] bounds].size.width, [[UIScreen mainScreen] bounds].size.width)];
    ];

感谢您的帮助:)

【问题讨论】:

你设置断点来看看你得到了什么值吗? 据我所知,willAnimateRotationToInterfaceOrientation 在模拟器上不起作用,因为它是由 iPhone 设备的加速度传感器触发的。显然,模拟器没有。 你可以在 iOS 模拟器 -> 硬件 -> 向左旋转/向右旋转 【参考方案1】:

我没有尝试过您的代码,但我坚信您看到的内容是由已弃用的 API 引起的。 Official documentation here 提供了详细信息,而满足您需求的新 API 是 viewWillTransitionToSize:withTransitionCoordinator:

还有一些关于***的其他问题,比如谈论解决方案:willAnimateRotationToInterfaceOrientation not called on ios6/7

【讨论】:

你说得对,willAnimateRotationToInterfaceOrientation:duration: 在 iOS 8 中已被弃用...我试过 viewWillTransitionToSize:withTransitionCoordinator: 它似乎在模拟器上运行良好。非常感谢 很高兴为您提供帮助。另外,感谢您给我一个“答案”标记和 1UP :)

以上是关于iOS 项目适用于 iPhone,但不适用于模拟器的主要内容,如果未能解决你的问题,请参考以下文章

AVPlayerViewController 视频适用于 iOS 11、12,但不适用于 iPhone 11 的 iOS 13

CoreData 适用于我的模拟器,但不适用于使用 xCode 6 的 iOS 8 Swift 中的 iPhone

iOS UIActionSheet 回调适用于模拟器,但不适用于手机

screenShot代码不适用于ipad,适用于iphone

Firebase 存储上传适用于模拟器,但不适用于 iPhone

Swift 和 TestFlight 适用于 iOS 8 但不适用于 iOS 7