11

我在 Storyboard 中将 UITabBar 设置为不透明,但我似乎仍然是半透明的。当我设置我的自定义 UITabBarController 时setBarStyle,只有 OpaqueBlack 可用。

但这是最小的问题。无论我做什么,我的视图内容都会位于标签栏下方,就像 ayutolayout 忽略它一样。在 Storyboard 上,一切看起来都很好。运行时出现问题?

哦,最重要的是。该问题仅出现在 iOS7 上!

这是我在情节提要中的 ViewController 设置:

在此处输入图像描述

这是定位在 ios7 应用程序的 UITabBar 下的有问题的内容 (UITableView)。虽然在故事板中看起来不错:

在此处输入图像描述

最后是 UITableView 约束:

在此处输入图像描述

4

4 回答 4

21

穿上它viewDidLoad,解决了这个问题:

if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0")) {
    [self setEdgesForExtendedLayout:UIRectEdgeNone];
}
于 2013-09-23T10:34:17.950 回答
9

xCode 还提供了编程能力:

[self setEdgesForExtendedLayout:UIRectEdgeNone];

通过Extend Edges部分在给定 ViewController 的情节提要中:

在此处输入图像描述

只需禁用Under Top BarsUnder bottom Bars选项。它们默认开启。

于 2013-11-08T21:56:48.697 回答
4

macros在您的项目文件中创建这些,<projectname>-Prefix.pch以便它们将在全局范围内工作:

#define SYSTEM_VERSION_EQUAL_TO(v)                  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame)
#define SYSTEM_VERSION_GREATER_THAN(v)              ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending)
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
#define SYSTEM_VERSION_LESS_THAN(v)                 ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)
#define SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v)     ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedDescending)

然后把这个放在每一个有这个问题的[super viewDidLoad]方法之后:viewDidLoadviewController

if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0")) 
{
        [self setEdgesForExtendedLayout:UIRectEdgeNone];
}
于 2013-10-08T13:28:08.117 回答
0

在 SwiftUIRectEdgeNone中不可用。您可以使用以下代码实现相同的目的:

edgesForExtendedLayout = []
于 2017-04-19T10:05:01.893 回答