我已经完成了这个问题所说的内容:Landscape Mode ONLY for iPhone or iPad
但是view.frame.size.height仍然是1024,这是设备处于纵向时的高度,当界面旋转宽度和高度切换值时肯定是这样吗?
(假设你想将屏幕拆分为3个视图,对于横向和纵向的应用程序,并且你做了view.frame.size.width / 3,在横向上作为宽度值不正确实际上不是宽度)
我确信在iPhone上有宽度和高度开关,为什么不在iPad上呢?
这让我再次感到震惊,我也没有使用笔尖,有人可以给出一个可接受的答案吗? (即不涉及手动切换宽度和高度的那个)
一旦奖金被授予答案,我将开始另一笔250美元的赏金并将其奖励给同一个人。
答案 0 :(得分:24)
您尚未指定要查询的“视图”。假设这是窗口的顶级子视图:
您应该查看视图的bounds
而不是frame
。 frame
位于定义视图的坐标(外部世界)中,因此在旋转时可以保持不变。 bounds
是在视图内部及其子视图中使用的坐标。旋转时会发生这种情况。
答案 1 :(得分:2)
+ (int) currentWidth
{
UIScreen *screen = [UIScreen mainScreen];
int width = screen.currentMode.size.width;
int height = screen.currentMode.size.height;
return (UIDeviceOrientationIsLandscape([[UIApplication sharedApplication] statusBarOrientation]))? MAX (width, height) : MIN (width, height);
}
我花了一些时间试图找出一个令人沮丧的问题的最简单的解决方案,这是我能想到的最好的解决方案。希望它可以提供帮助。