Xcode 6 iOS 7 视图大小
Xcode 6 iOS 7 view size
我的根视图控制器是一个选项卡视图控制器。我的应用程序只有横向模式。它在项目设置和情节提要中为每个 VC(包括根目录)设置为横向。在 viewDidLoad 中,我有:
NSLog(@"width of view in didappear:%f",self.view.frame.size.width);
和 viewDidAppear 中的相同代码。在 iOS 8 的 viewDidLoad 中,该行打印出 480。在 iOs 7 中,它打印出 320(纵向模式下屏幕的宽度),但在 viewDidAppear 中,它打印出 480,这是正确的。是的,对于一直在寻找 'precise' 详细信息的所有人来说,它是同一台设备。
为什么视图在 ios7 中的 viewDidLoad 中仍然是纵向的,但在 ios8 中不是?可以做什么?我在 viewDidLoad 中设置了我的整个视图,因为我只需要做一次,所以不能将它迁移到 viewDidAppear 或其他地方。
基本上,viewDidLoad 运行 在 UIElements 被加载并放置在屏幕上之前,所以这就是你得到错误大小的原因。至于 iOS7 和 iOS8 之间的区别,我猜 apple 稍微改变了内部结构,但无论如何你绝对应该将你的图形代码移动到 viewWillAppear。加载图形时 viewWillAppear 为 运行,其工作方式与 viewDidLoad
相同
使用边界
CGRect rect = [[UIScreen mainScreen] bounds];
NSLog(@"width of view in didappear:%f",rect.size.width);
框架与父视图相关。最顶层的视图是 UIWindow,它在 iOS 8 中变得依赖于旋转。因此,在风景中,框架和边界在 iOS 7 中会有所不同,但在 iOS 8 中是相同的。如果您使用边界而不是框架,它应该为两者提供相同的结果 iOS 版本,假设对象没有旋转一定度数。
如果是这样的话,iOS 7 和 8 之间有一个奇怪的区别。我猜它是同一设备 type 但物理上不同的项目?还是您真的 运行ning iOS 7 & 8 在同一台设备上?
所以理论上您可能仍然存在设置差异。 IE。 iOS 7 设备纵向锁定等
如果设置确实如您所说,布尔值 属性 将帮助您在 viewDidAppear 中 运行。我只是在这里提供了一个如何做到这一点的例子:
我的根视图控制器是一个选项卡视图控制器。我的应用程序只有横向模式。它在项目设置和情节提要中为每个 VC(包括根目录)设置为横向。在 viewDidLoad 中,我有:
NSLog(@"width of view in didappear:%f",self.view.frame.size.width);
和 viewDidAppear 中的相同代码。在 iOS 8 的 viewDidLoad 中,该行打印出 480。在 iOs 7 中,它打印出 320(纵向模式下屏幕的宽度),但在 viewDidAppear 中,它打印出 480,这是正确的。是的,对于一直在寻找 'precise' 详细信息的所有人来说,它是同一台设备。
为什么视图在 ios7 中的 viewDidLoad 中仍然是纵向的,但在 ios8 中不是?可以做什么?我在 viewDidLoad 中设置了我的整个视图,因为我只需要做一次,所以不能将它迁移到 viewDidAppear 或其他地方。
基本上,viewDidLoad 运行 在 UIElements 被加载并放置在屏幕上之前,所以这就是你得到错误大小的原因。至于 iOS7 和 iOS8 之间的区别,我猜 apple 稍微改变了内部结构,但无论如何你绝对应该将你的图形代码移动到 viewWillAppear。加载图形时 viewWillAppear 为 运行,其工作方式与 viewDidLoad
相同使用边界
CGRect rect = [[UIScreen mainScreen] bounds];
NSLog(@"width of view in didappear:%f",rect.size.width);
框架与父视图相关。最顶层的视图是 UIWindow,它在 iOS 8 中变得依赖于旋转。因此,在风景中,框架和边界在 iOS 7 中会有所不同,但在 iOS 8 中是相同的。如果您使用边界而不是框架,它应该为两者提供相同的结果 iOS 版本,假设对象没有旋转一定度数。
如果是这样的话,iOS 7 和 8 之间有一个奇怪的区别。我猜它是同一设备 type 但物理上不同的项目?还是您真的 运行ning iOS 7 & 8 在同一台设备上?
所以理论上您可能仍然存在设置差异。 IE。 iOS 7 设备纵向锁定等
如果设置确实如您所说,布尔值 属性 将帮助您在 viewDidAppear 中 运行。我只是在这里提供了一个如何做到这一点的例子: