代码之家  ›  专栏  ›  技术社区  ›  mahboudz

强制横向应用程序的困难

  •  3
  • mahboudz  · 技术社区  · 15 年前

    我有两个应用程序,这两个程序都迫使用户在横向模式下使用iPhone,以便拥有更宽的屏幕,而不是更高的屏幕。

    我发现的一件事是,我的第一个视图看起来很好,但是所有其他视图都会出现它们的子视图(uibutton、UIPicker、UIViews)被压缩到一侧或被剪裁(取决于元素是否设置为在视图大小更改时移动、调整大小或保持在相同的位置)。我所有的视图都是在IB中以横向设计的。我的底层UIWindow,以及我能想到的一切都是以横向布局的。即使我的plist文件也设置了UIInterfaceOrientationLandscapeRight标志。

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

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

    [coming.view setFrame:CGRectMake(0, 0, 480, 300)];
    

    有人知道我为什么要这么做吗?只是iPhone假设加载的视图是300x480,除非对其应用转换?

    谢谢。

    另外,如果我不调用setFrame,这就是视图的外观,如上所述:

    alt text http://files.me.com/mahboud/ljhvun

    4 回复  |  直到 15 年前
        1
  •  1
  •   Mike Chen    15 年前

    我认为你想在你的应用程序中的每个单一视图中使用横向模式。你也希望笔尖是横向模式。在nib中,可以将视图大小调整为(statusbar为0,0480300,非statusbar为320)。设计你想要的。最后,视图中的控制器为自动旋转返回no。最后变换视图并旋转。

        2
  •  1
  •   Community CDub    8 年前

    我也遇到过类似的问题 SO ,然后想出来,自己回答。你可能想看看。

        3
  •  0
  •   rpetrich    15 年前

    UIViewController 和公司,它应该是相对简单的;对于其他方法可能更复杂。

    shouldAutorotateToInterfaceOrientation: 在视图控制器上,在界面生成器中设置视图,并设置 UIInterfaceOrientation UIInterfaceOrientationLandscapeRight 在你的信息列表和被设置。

        4
  •  0
  •   zlog    14 年前

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

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