UISearchBar布局问题(iOS 8)

时间:2015-07-22 06:33:40

标签: ios layout uisearchbar

我正在做一个应用程序的简单更改,以添加UISearchBar组件,但是在UI中遇到了一些相当奇怪的布局怪癖。用图片说明可能更容易。

这是组件没有焦点时的样子:

UISearchBar default

请注意,图标和占位符文本太过分了,占位符文本太过分了。这就是当我点击该字段时会发生什么:

enter image description here

图标现在位于正确的位置,但占位符文本现在位于左侧太远并与图标重叠。是什么给了什么?

当场失去焦点时,它会恢复到原始布局。除非我先输入一些文本,否则它会保留第二种布局。

我用来设置UISearchBar的代码没有做任何特别的事情:

    UIView* containerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 44)];
    containerView.backgroundColor = UI_COLOR_NAV_TITLEBAR;

    searchField = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, containerView.frame.size.width - 40, 44)];
    searchField.placeholder = @"search all items";
    searchField.searchBarStyle = UISearchBarStyleMinimal;

    searchField.showsBookmarkButton = NO;
    searchField.showsCancelButton = NO;
    searchField.showsScopeBar = NO;
    searchField.showsSearchResultsButton = NO;

    UITextField* textSearchField = [searchField valueForKey:@"_searchField"];
    searchField.backgroundColor = [UIColor clearColor];
    textSearchField.textColor = UI_COLOR_NAV_TEXT;

    searchField.delegate = self;
    [containerView addSubview:searchField];

    //...

我希望UISearchBar始终显示在第二个示例中,但显然没有文本字段与图标重叠。我忽略了这个问题的简单解决方案吗?

1 个答案:

答案 0 :(得分:0)

尝试使用以下搜索代码进行搜索..

[searchField setLeftViewMode:UITextFieldViewModeNever];
[searchField setRightViewMode:UITextFieldViewModeNever];
[searchField setBackground:[UIImage imageNamed:@"searchicon.png"]];

最后是在左侧显示图标,使用图像。