标题非常自我解释,在iOS 10.3上使用带有自定义视图的UIBarButtonItem
{在这种情况下为UIStackView
)分配给Navigation LeftBarButtonItem
的导航栏在iOS上不可见11.我还没弄清楚为什么它没有显示但是当我用键盘键入内容时我的TextChanged
事件的逻辑有效!所以UISearchView
就在那里,但它不可见:
这是一些代码(它用C#编码,但它使用的是Objective C方法。):
var width = NavigationController.NavigationBar.Frame.Width;
var height = NavigationController.NavigationBar.Frame.Height;
_searchBarContainer = new UIStackView(new CGRect(0, 0, width * 0.75, height))
{
Alignment = UIStackViewAlignment.Center,
Axis = UILayoutConstraintAxis.Horizontal,
Spacing = 3
};
_uiSearchBar = new UISearchBar
{
BackgroundColor = UIColor.Clear,
BarTintColor = UIColor.Clear,
BackgroundImage = new UIImage(),
Placeholder = Strings.Search
};
_uiSearchBar.SizeToFit();
if (_iOS11)
{
_uiSearchBar.HeightAnchor.ConstraintEqualTo(44).Active = true;
}
_searchbarButtonItem = new UIBarButtonItem(_searchBarContainer);
NavigationItem.SetLeftBarButtonItem(_searchbarButtonItem, true);
ParentViewController.NavigationItem.LeftBarButtonItem = NavigationItem.LeftBarButtonItem;
在iOS 10上使用相同的代码可以正常工作。
答案 0 :(得分:1)
在将其设置为左侧栏按钮项之前,请尝试设置约束以正确调整_searchBarContainer的大小。从iOS11导航栏使用自动布局。如果iOS 11存在,请确保仅添加约束,否则我在iOS 9导航栏中遇到问题。 还可以在Dev forum中查看此主题,其中解释了条形图项如何包装在堆栈视图中,也可能有助于解决您的特定问题。