主 UITableView 在搜索结果 TableView 状态栏中可见

Posted

技术标签:

【中文标题】主 UITableView 在搜索结果 TableView 状态栏中可见【英文标题】:Main UITableVew is visible in searchResultsTableView status bar 【发布时间】:2014-03-11 11:02:11 【问题描述】:

我的应用中有两个UITableViews(一个用于常规使用,另一个用于搜索)。当我使用常规时,状态栏是不透明的,但是当我输入 searchResultsTableView 时,我可以看到常规 UITableView 中的一些项目。

如您所见,UISearchBar 是不透明的,因此它后面没有任何东西,但状态栏仍然是半透明的。 我已经在searchDisplayController: willShowSearchResultsTableView: 中添加了[self.tableView setHidden:YES];,但这是一个非常原始的解决方案,当我的常规UITableView 在搜索开始时显示时不起作用。

我的问题是如何使状态栏不透明?只是为了避免这种烦人的事情。

【问题讨论】:

【参考方案1】:

我找到了两个解决此问题的方法。两者都对我有用,但第二个更简单,您不必在代码中做任何事情。希望对您有用!


第一个解决方案:

您可以在代码中创建自定义UIView 并添加为子视图。如果您的应用程序具有UINavigationBar 或任何其他组件的一种颜色,并且它不会在整个生命周期中改变,您始终可以在application:didFinishLaunchingWithOption: 中实现它。否则,您可以随时添加此代码,但您必须记住将此子视图添加到正确的超级视图。这是代码示例:

UIView *addStatusBar = [[UIView alloc] init];
addStatusBar.frame = CGRectMake(0, 0, 320, 20);
addStatusBar.backgroundColor = [UIColor colorWithRed:0.79 green:0.79 blue:0.81 alpha:1];
[self.navigationController.view addSubview:addStatusBar];

第二种解决方案:

Xcode 中有一个名为 Clip Subviews 的小复选框,在这种情况下它非常有用。您可以找到在状态栏下可见的视图(在我的例子中是UITableView)并将其剪辑到子视图中。我不知道如何,但就我而言,UISearchBar 开始影响状态栏,所以现在它是不透明的,颜色为 UISearchBar

【讨论】:

以上是关于主 UITableView 在搜索结果 TableView 状态栏中可见的主要内容,如果未能解决你的问题,请参考以下文章

UITableView 标题视图调整大小

UITableView tableHeaderView 高度计算

在 Table View Controller 中水平滚动 UITableView

如何调整一个UITableView的tableHeaderView

移除 UITableView 的边框,而不是分隔符

无法将单元格从 Modal VC 添加到 UITableView 到 Table VC(复杂)