我的应用程序主要显示照片。
该应用程序最初是为iOS 3.1编写的,并在发布之前升级为4。从那时起它就没有被触动过。现在,API的所有者应用了一些与他们认为不兼容的更改,我被迫更新应用程序。因此,我必须一次性去iPhone 5和6以及6+和iOS 7和8更新。
我在iphone 4,5和6+维度的模拟器中观察到这种行为。
肖像看起来不错。 景观左看也很好。 景观正确搞砸了。显然看起来好像整个屏幕都向左移动了。
这很奇怪,因为我不知道任何对于左右风景我会做出什么不同的事情。我所做的只是在任何肖像和任何横向方向之间存在差异。
它在旧版本中运行良好。但坦率地说,我不能再复制这个了,因为我无法访问旧的xcode和sdk版本。但该应用程序存储多年,在现代设备和现代操作系统版本上运行良好。
更多背景信息,以防万一重要:
该应用基于UITabBar,但在此视图中不可见。
图像可滚动。它被放置在一个视图的三倍大小的屏幕上,前面和后面的图像视图分别放在左边和右边。具有三个图像的该视图分别放置在屏幕或窗口大小的滚动视图内。这个概念仍然适用于文件,它只是转移了。
当我在调试器或NSLog中检查视图项的帧时,它们似乎都是正确的,分别从(0.0 / 0.0)开始。
底部的视图以及导航到相关功能及其视图控制器的四个按钮,在每次旋转时以编程方式重新排列,以及带有文本信息的叠加层。一切正常,但它在这一个方向上移动了。 好吧,所有视图都在每次轮换时以编程方式进行布局。
没有定义约束。 iOS6 / 7增量都设置为0.
该应用程序需要全屏"。通过点击图像,所有UI项目都会消失并重新显示在下一个选项卡上。 (只需设置.hidden属性。除了导航栏。这是使用setNavigationBarHidden管理的:动画:动画上带有YES)即使在移位视图中也能正常工作。
我的想法已经不多了。
答案 0 :(得分:0)
虽然我把所有细节放在一起提出问题,但最终有一个想法得到了解决。
该问题与隐藏标签栏有关。我无法使用隐藏标签栏的常规方式,因为当导航到与底部叠加视图上的按钮关联的功能时,它不会重新出现。
因此我做了某种黑客攻击。我没有定期隐藏它,而是将标签栏移出屏幕。 AND:这是我对景观和景观留下的唯一不同的做法。我只是搜索了常量名称并找到了它。
显然,操纵标签栏视图在较旧的iOS版本中存在缺陷。 (或者在较旧的SDK版本中,我仍在处理这个重要的细节)
为了克服这个缺陷,标签栏视图以这种方式修改为右侧景观:
[self.tabBarController.view setFrame:CGRectMake(0-kTabBarHeight,0,width+kTabBarHeight,height)];
这似乎没有任何意义,但在几年前编写应用程序时类似的问题确实帮了我很多。 现在,我将其更改为:
[self.tabBarController.view setFrame:CGRectMake(0,0,width+kTabBarHeight,height)];
对于景观也是如此。
对于时间的推移,我将iOS版本> = 8.0和更小版本分开。但我会仔细检查旧设备,以后可能会回到这个问题。
我留下了问题,因为我也发现了原来的“hack”,所以我猜其他人在分别更新到ios 8或SDK 8时会遇到同样的问题。
感谢收听。