UISearchBar 子视图奇怪的行为
UISearchBar subview strange behaviour
我已经通过 Interface Builder 添加了 UISearchDisplayController
,然后我像这样将 UISearchBar
添加到我的 navigationBar
self.searchDisplayController.displaysSearchBarInNavigationBar = YES;
它工作正常,看起来不错。然后我想做的是向 searchBar
添加一个子视图(作为占位符图像)。我通过
[self.searchDisplayController.searchBar addSubview:self.imageView];
问题是,imageView
不可见。我 NSLog
它 superview
并且我得到确认它是 searchBar
。我还可以看到 searchBar
有 1 个 subview
,但是当我记录 subview
时,它告诉我它是……鼓声……searchBar
本身。
怎么会这样?
编辑
有趣的是,如果我将 searchBar
作为子视图添加到 navigationBar
并添加我的 imageView
,它是可见的。只有当 searchBar
被 self.searchDisplayController.displaysSearchBarInNavigationBar = YES
添加到 navigationBar
时才会出现问题。
以下是我的解决方法 - 我希望这对某人有所帮助。像这样 navigationBar
添加 searchBar
的奇怪之处
self.searchDisplayController.displaysSearchBarInNavigationBar = YES;
是 'didLayoutSubviews' 在 viewController
中被调用了两次,即 searchDisplayController
将 searchBar
添加到 navigationBar
中,延迟了我无法通过现有委托方法进行捕获。
我最后做的是将 imageView
的 zIndex
设置为最大值
self.imageView.layer.zPosition = MAXFLOAT;
所以即使 searchDisplayController
延迟将 searchBar
添加到 navigationBar
,imageView
仍然保持在顶部。
我已经通过 Interface Builder 添加了 UISearchDisplayController
,然后我像这样将 UISearchBar
添加到我的 navigationBar
self.searchDisplayController.displaysSearchBarInNavigationBar = YES;
它工作正常,看起来不错。然后我想做的是向 searchBar
添加一个子视图(作为占位符图像)。我通过
[self.searchDisplayController.searchBar addSubview:self.imageView];
问题是,imageView
不可见。我 NSLog
它 superview
并且我得到确认它是 searchBar
。我还可以看到 searchBar
有 1 个 subview
,但是当我记录 subview
时,它告诉我它是……鼓声……searchBar
本身。
怎么会这样?
编辑
有趣的是,如果我将 searchBar
作为子视图添加到 navigationBar
并添加我的 imageView
,它是可见的。只有当 searchBar
被 self.searchDisplayController.displaysSearchBarInNavigationBar = YES
添加到 navigationBar
时才会出现问题。
以下是我的解决方法 - 我希望这对某人有所帮助。像这样 navigationBar
添加 searchBar
的奇怪之处
self.searchDisplayController.displaysSearchBarInNavigationBar = YES;
是 'didLayoutSubviews' 在 viewController
中被调用了两次,即 searchDisplayController
将 searchBar
添加到 navigationBar
中,延迟了我无法通过现有委托方法进行捕获。
我最后做的是将 imageView
的 zIndex
设置为最大值
self.imageView.layer.zPosition = MAXFLOAT;
所以即使 searchDisplayController
延迟将 searchBar
添加到 navigationBar
,imageView
仍然保持在顶部。