iphone - UISearchDisplayController 隐藏阴影

标签 iphone objective-c ios uisearchdisplaycontroller

如果您仔细观察 UISearchDisplayControllerUISearchBar 的底部,您会发现它有一个微妙的投影。这个阴影不适合我目前正在开发的应用程序的设计,所以我试图删除/隐藏它。不幸的是我还没有成功。

在研究这个投影的过程中,我发现它不是 UISearchBar 的一部分。当我从 - (void)searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controller 的 super View 中删除 UISearchDisplayControllerUISearchBar 时,阴影仍然可见。

阴影原来是 UISearchDisplayController 的 searchResultsTableView 的一部分:当我隐藏 searchResultsTableView 时,阴影消失了。但是,我无法追踪其层上有阴影的 View 。我尝试递归遍历所有可见 View (从 [[UIApplication sharedApplication] window] 开始)然后隐藏每个 View 的阴影并将其 clipsToBounds 属性设置为 YES,这也没有产生所需的效果结果。

有什么想法吗?

最佳答案

我终于找到了解决办法。由于将 clipsToBounds 设置为 YES 并隐藏层次结构中每个 View 的投影不起作用,很明显阴影是图像。在遍历 searchResultsTableView 的所有 subview 并打印它们的类属性后,我发现了 _UISearchBarShadowView 的一个实例,这显然是罪魁祸首。所以我现在正在做的是找到 _UISearchBarShadowView 并将其 alpha 设置为 0.0f。

- (void)searchDisplayController:(UISearchDisplayController *)controller didShowSearchResultsTableView:(UITableView *)tableView
{
    [self _findAndHideSearchBarShadowInView:tableView];
}

- (void)_findAndHideSearchBarShadowInView:(UIView *)view
{
    NSString *usc = @"_";
    NSString *sb = @"UISearchBar";
    NSString *sv = @"ShadowView";
    NSString *s = [[usc stringByAppendingString:sb] stringByAppendingString:sv];

    for (UIView *v in view.subviews)
    {
       if ([v isKindOfClass:NSClassFromString(s)]) {
            v.alpha = 0.0f;
        }
        [self _findAndHideSearchBarShadowInView:v];
    }
}

关于iphone - UISearchDisplayController 隐藏阴影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13634319/

相关文章:

iphone - 具有CFSocket的BAD_EXC_ACCESS

iphone - if 语句的问题 ||

iphone - 在 App Purchase 用户取消 tx 而应用程序在后台 : tx state stays on purchasing

ios - 如何升级使用迦太基安装的现有框架

objective-c - 推荐 Objective-C 中的类设计

ios - 在 iOS 中按下返回按钮时如何创建确认弹出窗口?

ios - UITableView 在嵌入容器内部的 Controller 之间传递数据

c++ - 解析问题 - Opencv 与 Xcode

ios - 如何在Parse中获取用户的FB ID?我可以访问AuthData吗?

ios - Swift String 到 unsigned char [](CUnsignedChar)