Iphone 难以使用强制横向定向的应用程序

Iphone 难以使用强制横向定向的应用程序,iphone,uiview,uiviewcontroller,Iphone,Uiview,Uiviewcontroller,我有两个应用程序,它们都强迫用户在横向模式下使用iPhone,以获得更宽的屏幕,而不是更高的屏幕 我发现的一件事是,我的第一个视图看起来不错,但所有其他视图都会将其子视图(UIButtons、UIPicker、UIViews)压缩到一侧或剪裁(取决于是否将元素设置为移动、调整大小或保持在视图大小更改时的相同位置)。我所有的视图都是在IB中以横向方向设计的。我的窗户和我能想到的一切都是以景观的方式布置的。甚至我的plist文件也设置了UIInterfaceOrientationAndscapeRi

我有两个应用程序,它们都强迫用户在横向模式下使用iPhone,以获得更宽的屏幕,而不是更高的屏幕


我发现的一件事是,我的第一个视图看起来不错,但所有其他视图都会将其子视图(UIButtons、UIPicker、UIViews)压缩到一侧或剪裁(取决于是否将元素设置为移动、调整大小或保持在视图大小更改时的相同位置)。我所有的视图都是在IB中以横向方向设计的。我的窗户和我能想到的一切都是以景观的方式布置的。甚至我的plist文件也设置了UIInterfaceOrientationAndscapeRight标志

现在,如果我与rootview控制器同时加载所有视图,那么就没有问题了。但如果我以后加载了视图,它们会被剪裁或压缩

解决此问题的唯一方法是在我的代码中添加以下行,并在新视图中翻转:

[coming.view setFrame:CGRectMake(0, 0, 480, 300)];
有人知道我为什么要这么做吗?是否只是iPhone假设加载的视图是300x480,除非对其应用转换

谢谢

ps.如果我不调用setFrame,视图就是这样的,如上所述:


在第一次加载后加载的所有ViewController的屏幕都将被类似地压缩。由于某些原因,第一个viewcontroller没有此问题。

正确的答案取决于您如何强制横向定位。如果您是通过
UIViewController
和company来实现这一点,那么它应该相对简单;对于其他方法,可能更复杂


在简单的情况下,您应该能够覆盖视图控制器上的shouldAutorotateToInterfaceOrientation:,在Interface Builder中设置视图,然后在Info.plist中将
UIInterfaceOrientation
键设置为
UIInterfaceOrientation和scapeRight
,然后进行设置。

我认为您希望在应用程序的每个视图中使用横向模式。您希望nib也是横向模式。您可以在nib中将视图调整为(0,0480300表示状态栏,320表示非状态栏)。设计你想要的。最后,视图中的控制器返回no进行自动旋转。最后转换视图并旋转。

我遇到了一个类似的问题,提出了这个问题,然后自己解决了。您可能想查看它。

我解决这个问题的一个简单方法是让我的根视图控制器子类UINavigationController,并实现shouldAutorotateToInterfaceOrientation来处理横向视图ie

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return ((interfaceOrientation == UIInterfaceOrientationLandscapeLeft) ||
            (interfaceOrientation == UIInterfaceOrientationLandscapeRight));
}

推送到导航控制器的每个视图控制器似乎也出现在横向视图中

UIInterfaceOrientationAndscapeRight设置在info.plist中,因此应用程序从一开始就以该方向出现。笔尖中的所有部件都设置在相同的方向上。不过,第二个和下一个视图需要如上所述设置视图大小,以便正确显示其内容。我更改了所有返回((interfaceOrientation==UIInterfaceOrientationAndscapeLeft)| |(interfaceOrientation==UIInterfaceOrientationAndscapeRight));在所有情况下都返回NO。应用程序以纵向模式显示所有视图。对于“shouldAutorotate”,您永远不应返回否。不返回意味着你不想处于任何方向,这是不可能的。UIKit将在控制台中记录警告,您应该检查它。相反,对于您想要的方向,请返回YES。我可以确认,从iPhone OS 3.1.3开始,这仍然是一个问题。由于我的ADC会员资格中包含两个免费支持事件,我已经提交了一个,当我有任何消息时,会通知您。