Фон, показывающий при добавлении UISearchBar в UINavogationBar - PullRequest
0 голосов
/ 31 марта 2011

Я использую приведенный ниже код для добавления панели поиска на панель навигации.

Я получаю все, чтобы правильно отображаться, но фон есть (в основном из UIBarButtonItem, от которого я не могу избавитьсяиз).- Пожалуйста, проверьте скриншот для iPad.

Screenshot for iPad

Есть ли способ избавиться от синего фона, отображаемого за панелью поиска?

Спасибо

Дев.

- (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 ]

1 голос
/ 19 апреля 2011

Я считаю, что проблема в том, что вы добавляете этот дополнительный UIView.Даже если у него clearColor фон, он захватывает CGRect, созданный для UIView *hackView.Избавьтесь от него и просто добавьте UISearchBar к UIBarButtonItem, и это должно решить проблему с отображением.

Кроме того, не забудьте реализовать UISearchBarDelegate для обеспечения надлежащей функциональности.

0 голосов
/ 12 декабря 2011

Я решил эту проблему, используя следующий код.

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

[searchBar release];
[navRight release];
...