iOS 7中UIView的显示问题

3

我已经使用xib为iOS 6开发了应用程序。所有的视图与xib完全相同。 但是在IOS 7中,由于状态栏,视图会向上移动,底部会留下空白。

我该怎么解决这个问题?


看看这个答案,它会帮助你解决这个问题 https://dev59.com/IGMk5IYBdhLWcg3wxAvy#19025547 - Ganapathy
5个回答

5

1
谢谢你的回复。但我能够解决这个问题。你可以给一些例子或参考资料吗? - user2526811
你可以先为 iOS 7 设计你的视图,然后再设置一个修正值来适配 iOS 6。 - Léo Natan
1
是的,这很好,但我也通过编程设置了框架。那么,我如何为此设置增量? - user2526811
对于通过编程设置的视图,您将需要根据操作系统版本自行计算。 - Léo Natan

3

在IOS7中,您需要将状态栏从顶部下移,而这在IOS6中是默认的。

float SystemVersion=[[[UIDevice currentDevice] systemVersion] floatValue];

if(SystemVersion<7.0f)
{
    //Currently your app is running in IOS6 or older version. So you need not to do anything.  
}
else
{
    // Currently your app is running in IOS7. Do the following.

    CGRect TempRect;
    for(UIView *sub in [[self view] subviews])
    {
        TempRect=[sub frame];
        TempRect.origin.y+=20.0f; //Height of status bar
        [sub setFrame:TempRect];
    }
}

但是,状态栏下方的区域将会变成黑色,并且显示不正确。然后他必须在每个视图控制器中指定状态栏样式应为浅色内容。这太麻烦了,而且违反了iOS7设计准则。 - Léo Natan
请检查我的更新答案。在这里,我将所有视图向下移动20.0f以适应IOS7。 - Tapas Pal
他可以在界面构建器中轻松完成此操作,不需要编写代码。 - Léo Natan
我们能将窗口本身移动到下方20像素吗? - BaSha
@LeoNatan:如何使用Xib实现? - BaSha

2

修复状态栏问题的步骤:

  1. 将“查看方式”选项更改为“IOS 7及更高版本”,并从文件检查器中取消勾选使用自动布局选项。

  2. 进入尺寸检查器,并增加20像素的原点y值所选xib中添加的所有控件

  3. 在所选xib中,为所有添加的控件增加y的增量值为-20

同时在IOS6和IOS7上运行,问题应该就会被解决。(确保y原点和增量值得完美处理,如我所提到的。)

了解更详细的信息,请参见此链接中的答案:https://dev59.com/IGMk5IYBdhLWcg3wxAvy#19025547

供您参考

enter image description here


1
你可以通过使用ios6/7 delta在大小检查器上更改delta x,delta y,delta width,delta height的值来轻松地在ios7和ios6中正确设置UIView内容。首先,在x,y,width,height中为ios7设置您的值,然后进行检查,然后通过减去和添加数字来为ios6设置增量。我也这样做,而且非常容易,你可以随时向我寻求帮助...谢谢

0
如果您有自定义的UINavigationController,请尝试将navigationBartranslucent属性设置为NO,如下所示:
navigationBar.translucent = NO;

这对我有用


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接