У меня в настоящее время есть UISearchBar (присоединенный к UISearchDisplayController), но я уменьшил ширину панели поиска, таким образом, я мог отобразить пользовательскую кнопку с ее правой стороны от него, когда панель поиска не выбрана. Кнопка используется для доступа к другим представлениям.
Однако, когда я выбираю панель поиска и затем нажимаю отмену (или даже выполняю поиск), и возвратитесь к нормальному представлению, где панель поиска должна быть отображена с моей пользовательской кнопкой, панель поиска анимирует и поднимает всю комнату для кнопки и не отображенный. По существу панель поиска поднимает всю ширину экрана, когда я только хочу, чтобы это подняло часть его.
Там какой-либо путь состоит в том, чтобы препятствовать тому, чтобы панель поиска анимировала к общей ширине экрана?
Это - то, как я определил CGRect панели поиска:
self = [[UISearchBar alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 250.0f, 45.0f)]
Это сообщение SO может помочь. Похоже, вам нужно создать подкласс UISearchBar, чтобы он не рисовал как обычно.
ОБНОВЛЕНИЕ Я хотел использовать UISearchBar в UINavigationBar и изменить его размер, чтобы он заполнял панель при прикосновении - точно так же, как в приложении Safari. Единственный способ сделать это - напрямую использовать UISearchBar. Ваша проблема немного отличается, но вы можете попробовать получить желаемое поведение пользовательского интерфейса, используя для начала только панель поиска; затем подключите логику для последующего поиска; т.е. не полагаться на UISearchDisplayController?
В конце концов, ответ на этот вопрос оказался проще, чем я думал. По какой-то причине iPhone SDK заполняет ширину рамки строки поиска, поэтому мне приходится постоянно возвращать ее к нужному размеру каждый раз, когда пользователь нажимает кнопку отмены и срабатывает событие searchBarCancelButtonClicked(). Простой [searchBar setFrame: frame] решил эту проблему. :)
Питер, проблема в сообщении, на которое вы дали ссылку, была немного другой, я уже смог изменить размер строки поиска до нужного мне размера, мне нужно было остановить ее возвращение к полной ширине. Тем не менее, спасибо за ссылку.