我已经通过 Interface Builder 添加了 UISearchDisplayController
,然后像这样将 UISearchBar
添加到我的 navigationBar
self.searchDisplayController.displaysSearchBarInNavigationBar = YES;
它工作正常,看起来不错。然后我想做的是向 searchBar
添加一个 subview (作为占位符图像)。我通过
[self.searchDisplayController.searchBar addSubview:self.imageView];
问题是,imageView
不可见。我 NSLog
它的 superview
并且我得到确认它是 searchBar
。我还可以看到 searchBar
有 1 个 subview
,但是当我记录 subview
时,它告诉我它是... drum-rolls ... searchBar
本身。
这怎么可能?
编辑
有趣的是,如果我将 searchBar
作为 subview 添加到 navigationBar
并添加我的 imageView
,它是可见的。仅当 self.searchDisplayController.displaysSearchBarInNavigationBar = YES
将 searchBar
添加到 navigationBar
时才会出现问题。
最佳答案
这是我解决它的方法 - 我希望这对某人有所帮助。像这样向 navigationBar
添加 searchBar
的奇怪之处
self.searchDisplayController.displaysSearchBarInNavigationBar = YES;
是在 viewController
中调用了两次 'didLayoutSubviews',即 searchDisplayController
将 searchBar
添加到 navigationBar
我无法通过现有的委托(delegate)方法捕获延迟。
我最终做的是将我的 imageView
的 zIndex
设置为最大值
self.imageView.layer.zPosition = MAXFLOAT;
因此,即使 searchDisplayController
延迟将 searchBar
添加到 navigationBar
,imageView
仍然保留在上面。
关于ios - UISearchBar subview 奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27777874/