iPad 应用程序布局不正确

Posted

技术标签:

【中文标题】iPad 应用程序布局不正确【英文标题】:iPad app not laying out properly 【发布时间】:2013-03-16 17:13:15 【问题描述】:

我有一个继承了代码的 iPad 应用程序。

我对 iPad 开发比较陌生,所以请多多包涵……

该应用程序是 2010 年由承包商在场外编译的。从那时起,我的公司已被收购,我们正在进行品牌重塑。我看似简单的任务是用一个新的标志替换我们在这个应用程序中的标志。这应该需要几分钟 - 只需将新徽标放入代码中,编译,然后 bam!完成。

编译代码时出现问题...正在运行的应用程序以横向模式启动,并以其界面填满整个屏幕。当我在模拟器中编译应用程序或在我的 iPad 上运行它(通过 USB 电缆连接到我的 mac)时,屏幕以横向模式启动,但视图处于纵向模式。在整个应用程序的间歇性位置,视图从横向布局切换到纵向布局。

这让我发疯了,因为我什至不知道该寻找什么。我看到一些对 shouldAutoRotateToInterfaceOrientation 的引用——我认为这已被弃用。这会导致问题吗?

我知道自 2010 年以来发生了很多变化。我目前正在新的 Mac 上运行最新版本的 XCode。 (据我了解,我的前任从未真正编译过这里的应用程序,而是完全依赖承包商......据我所知,这可能是一直存在的问题,但没有人意识到)

更新

我有一台较旧的 mac(使用较旧版本的 XCode)进行测试。我已将应用程序代码移到旧版 Mac 上,更改了一些设置,它可以正常工作。

我还注意到我在新 Mac 上创建的任何应用程序的布局都不完全正确。例如,在表单顶部附近放置一个按钮,最终会滚动到应用程序的顶部,因此它甚至不可见。

XCode 中是否有定义此行为的设置?

【问题讨论】:

请参阅View Controller Programming Guide for iosControlling What Interface Orientations Are Supported (iOS 6) 部分,如果您想支持较旧的iOs 版本,还请查看Understanding the Rotation Process (iOS 5 and earlier) 部分。 【参考方案1】:

在 iOS 6.0 中检查视图控制器方向条件是否已更改..

// 覆盖以允许默认纵向以外的方向。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 

    // Return YES for supported orientations
    if (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight) 
    
        return YES;
    
    else 
    
        return NO;
    

【讨论】:

您还必须为每个控件设置位置控件,并根据 iOS 给您的机会相应地动态更改框架..

以上是关于iPad 应用程序布局不正确的主要内容,如果未能解决你的问题,请参考以下文章

iPad屏幕不支持自动布局

是否可以在没有自动布局的情况下为 iPad 设计视图?

ipad的正确使用方法视频,ipad的正确使用方法图解

UIScreen applicationFrame 在横向应用程序启动时返回不正确的矩形 (iPhone/iPad)

在 ipad 设计布局中一次显示多个详细信息视图

通用应用程序中完全不同的 iPad 用户界面