将UISearchBar添加到UINavogationBar时显示的背景

时间:2011-03-31 09:04:21

标签: iphone uinavigationbar uisearchbar

我使用下面发布的代码将搜索栏添加到导航栏。

我正在让所有内容正确显示但是有一个背景(主要是我无法摆脱的UIBarButtonItem)。 - 请查看iPad的屏幕截图。

Screenshot for iPad

有没有办法摆脱搜索栏后面显示的蓝色backgorund?

由于

开发。

- (void) viewDidLoad {
    [super viewDidLoad];

    UIView *hackView = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 250, 30)];
    hackView.backgroundColor = [UIColor clearColor];

    UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0.0, 0.0, 250, 30)];
    //[searchBar sizeToFit];
    [searchBar setBackgroundColor:[UIColor clearColor]];
    [hackView addSubview:searchBar];
    [searchBar release];

    UIBarButtonItem *hackItem = [[UIBarButtonItem alloc] initWithCustomView:hackView]; 
    [hackItem setWidth:250];


    self.navigationItem.rightBarButtonItem = hackItem;
    [hackView release];
    [hackItem release];



}

2 个答案:

答案 0 :(得分:1)

我认为问题在于您要添加额外的UIView。即使它具有clearColor背景,它也会抓取为CGRect创建的UIView *hackView。摆脱它,只需将UISearchBar添加到UIBarButtonItem,它就可以解决显示问题。

另外,请不要忘记实施UISearchBarDelegate以获得正确的功能。

答案 1 :(得分:0)

我使用以下代码解决了这个问题。

UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, 200, 20)];
UIBarButtonItem *navRight = [[UIBarButtonItem alloc] initWithCustomView:searchBar];
[[self navigationItem] setRightBarButtonItem:navRight];

[searchBar release];
[navRight release];