UISearchBar 子视图奇怪的行为

UISearchBar subview strange behaviour

我已经通过 Interface Builder 添加了 UISearchDisplayController,然后我像这样将 UISearchBar 添加到我的 navigationBar

self.searchDisplayController.displaysSearchBarInNavigationBar = YES;

它工作正常,看起来不错。然后我想做的是向 searchBar 添加一个子视图(作为占位符图像)。我通过

[self.searchDisplayController.searchBar addSubview:self.imageView];

问题是,imageView 不可见。我 NSLogsuperview 并且我得到确认它是 searchBar。我还可以看到 searchBar 有 1 个 subview,但是当我记录 subview 时,它告诉我它是……鼓声……searchBar本身。

怎么会这样?

编辑

有趣的是,如果我将 searchBar 作为子视图添加到 navigationBar 并添加我的 imageView,它是可见的。只有当 searchBarself.searchDisplayController.displaysSearchBarInNavigationBar = YES 添加到 navigationBar 时才会出现问题。

以下是我的解决方法 - 我希望这对某人有所帮助。像这样 navigationBar 添加 searchBar 的奇怪之处

self.searchDisplayController.displaysSearchBarInNavigationBar = YES;

是 'didLayoutSubviews' 在 viewController 中被调用了两次,即 searchDisplayControllersearchBar 添加到 navigationBar 中,延迟了我无法通过现有委托方法进行捕获。

我最后做的是将 imageViewzIndex 设置为最大值

self.imageView.layer.zPosition = MAXFLOAT;

所以即使 searchDisplayController 延迟将 searchBar 添加到 navigationBarimageView 仍然保持在顶部。