带有UISearchBar的LeftBarButtonItem在iOS 11上不可见

时间:2017-09-22 20:20:25

标签: ios objective-c xamarin.ios ios11

标题非常自我解释,在iOS 10.3上使用带有自定义视图的UIBarButtonItem {在这种情况下为UIStackView)分配给Navigation LeftBarButtonItem的导航栏在iOS上不可见11.我还没弄清楚为什么它没有显示但是当我用键盘键入内容时我的TextChanged事件的逻辑有效!所以UISearchView就在那里,但它不可见:

enter image description here

这是一些代码(它用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上使用相同的代码可以正常工作。

1 个答案:

答案 0 :(得分:1)

在将其设置为左侧栏按钮项之前,请尝试设置约束以正确调整_searchBarContainer的大小。从iOS11导航栏使用自动布局。如果iOS 11存在,请确保仅添加约束,否则我在iOS 9导航栏中遇到问题。 还可以在Dev forum中查看此主题,其中解释了条形图项如何包装在堆栈视图中,也可能有助于解决您的特定问题。