Как я изменяю ширину UISearchBar, когда это в заголовке таблицы так, чтобы индекс раздела не перекрывал текстовое поле? Я хочу воссоздать то же расположение, которое Вы находите в представлении контактов телефонного приложения.
Одно из возможных решений - добавить настраиваемое представление в tableHeaderView. Вот что я сделал:
searchBar - это UISearchBar, который я объявил в заголовочном файле. Я создал UIView и добавил UINavigationBar по всей ширине, а поверх него - короткий UISearchBar. Затем я, наконец, назначил UIView tableHeaderView.
searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0.0, 0.0, 290.0, 44.0)];
UIView *customTableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 44.0)];
UINavigationBar *dummyNavigationBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 44.0)];
[customTableHeaderView addSubview:dummyNavigationBar];
[customTableHeaderView addSubview:searchBar];
[dummyNavigationBar release];
self.tableView.tableHeaderView = customTableHeaderView;
[customTableHeaderView release];
Более элегантным решением может быть растяжение UISearchBar с помощью свойства contentStretch. Мне все еще нужно попробовать это и проверить, работает ли оно.
Если вы используете UISearchDisplayController, желаемое поведение будет работать автоматически, как указано в этот ответ .