Каков правильный подход для пользовательского UIToolBar?

Лучше - лучше в том смысле, что вас не отвергнут магазин Apple - при попытке создать собственный * UIToolbar для:

Вариант А

  • Добавьте большую среднюю кнопку в качестве UIButton в self.navigationController.view это ключ, поскольку я добавляю UIButton в navigationController, что, кажется, противоречит документации Apple
  • Используйте внешний вид UIToolbar для реализации настраиваемого фона

Вариант Б

  • Создайте UIToolbar и добавьте его как часть текущего ViewController в UINavigationController.
  • Добавьте UIButton как часть текущего ViewController в UINavigationController
  • Используйте метод setBackgroundImage UIToolBar, чтобы добавить настраиваемый фон

* Пользовательский фон, большая средняя кнопка

Это форма панели инструментов:

введите описание изображения здесь

Дополнительные сведения: это приложение для iOS 5.X или выше. Он использует UINavigationController. Основная проблема заключается в том, что часть приложения скрывает / отображает панель навигации в зависимости от состояния приложения.

Вариант A означает, что мне не нужно тренироваться, где разместить UIToolBar, сложно решить, где разместить UIToolbar, потому что а) если я показываю или скрываю панель навигации, это сдвигает все вверх / вниз по вертикали б) iPhone 5 с дополнительным вертикальным пространством - я не могу использовать автоматическое размещение, поскольку я поддерживаю iOS 5, и я действительно не понял, как использовать маски с автоматическим изменением размера. Я использую жестко закодированные «магические» числа.


person drc    schedule 28.04.2013    source источник


Ответы (1)


Я бы не стал делать ни то, ни другое.

UIToolbar удобен, когда вы хотите делать то, что он делает, и он допускает некоторую базовую настройку. Но в этом случае вам нужен вид, похожий на панель инструментов, который рисует себя так, как UIToolbar, похоже, не позволяет. Вы, вероятно, точно знаете, какие элементы вы хотите отобразить на своей «панели инструментов», и маловероятно, что вам понадобится обрабатывать произвольные наборы UIBarItems.

Итак, вместо того, чтобы вызывать у себя головную боль, пытаясь заставить UIToolbar делать то, для чего он никогда не был предназначен, просто создайте простое представление, содержащее ваше фоновое изображение (часть которого будет прозрачной). Поместите в представление несколько кнопок UIButton, основанных на изображениях, и положите конец. Было бы неплохо создать собственный подкласс UIView, представляющий вашу панель инструментов, чтобы все настройки были красиво упакованы в одном месте и чтобы вы могли повторно использовать панель инструментов в нескольких представлениях, если вам нужно.

person Caleb    schedule 28.04.2013
comment
Спасибо, что нашли время ответить. Я попробую такой подход. Есть какие-нибудь советы, как сделать так, чтобы это настраиваемое представление всегда находилось внизу экрана? У меня были проблемы с попыткой сохранить его внизу UINavigationController из-за того, что панель навигации отображается / скрывается и переключается между представлениями. Вместе с высотой экрана сетчатки 4 дюйма. - person drc; 28.04.2013
comment
Одним из преимуществ использования UIToolBar является то, что вы можете использовать функцию setItems UIToolBar и initWithBarButtonSystemItem для размещения кнопок, не беспокоясь об их расположении самостоятельно. Разве это не склоняет его в пользу UIToolBar? - person drc; 29.04.2013