Существует много разговоров о настройке UIBarButtonItem
с пользовательским представлением в виде UIButton. Это совершенно ясно. То, что я не нашел до сих пор, и что меня удивляет, заключается в том, что нет никаких упоминаний о пользовательских UIBarButtonItems, которые обрабатывают вращение интерфейса - это обычное поведение при повороте iPhone, кнопки штрих-кода сжимаются по вертикали. Однако, если вы настроили UIBarButtonItem обычным способом (путем вызова метода initWithCustomView:
), он останется без сжатия после поворота в ландшафтную ориентацию. Есть ли обходные пути для этого?Настройка UIBarButtonItem и вращения интерфейса
ответ
Ну, я нашел решение с обработкой UIApplicationDidChangeStatusBarOrientationNotification
в обычном UIBarButtonItem
классе довольно приличный.
Я думаю, вы должны перестроить UIBarButtonItem (свой пользовательский UIButton) с новым ориентационным изображением и текстом или сбросить кадр пользовательского вида.
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
UIButton *rightItemButton = (UIButton *)self.navigationItem.rightBarButtonItem.customView;
//resize the frame
if (isLandscape) {
} else if (isPortrait) {
....
}
}
Если вы можете добавить UIBarButtonItem от IB (вы не должны создать его программно) можно установить пружины и распорки, чтобы получить ваше поведение по умолчанию. Это решение сработало для меня.
hm. есть только ширина и вставки изображения могут быть настроены. но в любом случае, что, если есть необходимость в 'UIBarButtonItem' с пользовательским представлением, как я заявил в вопросе? (его мой случай) – peetonn
Дело в том, что если вы хотите настроить пользовательский UIBarButton в своей навигационной панели от IB, вы можете перетащить UIBarButtonItem на панель навигации, после чего перетащите UIButton внутри UIBarButtonItem, тогда вы можете настроить, как вам нравится UIButton (фон, название и т. д.). Для вашего случая я думаю, вы можете создать пользовательский UIView, в котором есть кнопка (или другие виды) внутри нее, а также установить весну и распорки, чтобы получить ваше поведение. ПРИМЕЧАНИЕ. Я не тестировал это дело, но я не вижу причин, почему это не может работать. – danypata
hm, похоже, может работать, если в вашем xib есть 'UINavigationController'. однако, это не мое дело. но в любом случае спасибо за подсказку! – peetonn
- 1. Настройка UIBarButtonItem
- 2. Настройка UIBarButtonItem с UIAppearance
- 3. CAShapeLayer замедление вращения интерфейса
- 4. Настройка заголовка и UIBarButtonItem в WePopoverController
- 5. Xcode UIBarButtonItem фоновое изображение и настройка действия
- 6. Пользовательский UIBarButtonItem с построителем интерфейса
- 7. Настройка UIBarButtonItem в Objective C
- 8. Настройка UIBarButtonItem в панели навигации.
- 9. Настройка просмотра камеры после перевода и вращения
- 10. Настройка интерфейса и бэкэнд yii2.0
- 11. Получение и настройка адресов интерфейса
- 12. Добавить UIBarButtonItem в построителе интерфейса, как?
- 13. Настройка фонового изображения для UIBarButtonItem в swift
- 14. Настройка UIBarButtonItem Apperance с несколькими видами UINavigationBar
- 15. Настройка UIBarButtonItem для изображения без фона
- 16. Предотвращение изменения интерфейса во время вращения
- 17. Настройка интерфейса Podio
- 18. Методы вращения интерфейса iOS8 не называются
- 19. Настройка базового интерфейса Android
- 20. Настройка интерфейса Nuxeo CMF
- 21. Настройка интерфейса matlab eclipse
- 22. Настройка интерфейса active_admin
- 23. Настройка графического интерфейса Google
- 24. Настройка пользовательского интерфейса ASP.NET
- 25. Настройка вектора 3 после вращения матрицы
- 26. Настройка пользовательского интерфейса Android и настройка макета с DP-модулем
- 27. Настройка интерфейса интерфейса запуска на ipad/iphone
- 28. Настройка интерфейса Панель навигации и кнопки
- 29. Бэкэнд и настройка интерфейса для Yii
- 30. reloadData() и настройка IBOutlets без интерфейса Builder
Вы имеете в виду свойства кнопки изменения из 'didRotateFromInterfaceOrientation:' метод контроллера вида? по моему мнению, его очень уродливая с точки зрения дизайна кода - у контроллеров просмотра есть достаточно работы, помимо корректирующих кнопок, которые представляют собой пользовательские виды барбитонов, которые являются дочерними элементами uinavigationitem, которые размещены на uinvaigationbar - безумные! Надеюсь, у яблока есть лучшее обходное решение для этого ... – peetonn
Да, потому что это ваш пользовательский вид, вы должны контролировать его самостоятельно, также вы можете переопределить макеты (void) layoutSubviews в ViewControllers для сброса размера и положения любых подзонов – shanegao
ну, да, я согласен ... но все же, на мой взгляд, такие тонкие настройки не позволяют нам использовать «хороший» дизайн кода - например, в этом случае я вижу более логичным создание такой кнопки на панели, которая будет полностью автономной и обрабатывать его «содержание». и я думаю, что в частности эта ситуация может быть решена, если яблоко предоставит какой-либо «didAdjustFrameForNewOrientation:» вызов или smth, как это. – peetonn