Показать кнопку возврата UINavigationBar, не нажимая контроллер представления - PullRequest
3 голосов
/ 22 октября 2010

В приложении «Фотографии» на iPad, когда вы нажимаете на альбом, стопка картинок расширяется, чтобы заполнить экран - вы находитесь в том же виде, просто немного переставляете сетку.Но вверху появляется кнопка «Назад» в виде стрелки влево, как если бы использовался pushViewController - за исключением того, что он аккуратно исчезает, а не скользит. Когда вы нажимаете это, он снова исчезает, а не выдвигается.

Есть ли способ повторить это поведение?Я попробовал несколько вариантов, и, возможно, просто что-то упустил.То, что я пробовал:

  • Настройка self.navigationItem leftBarButtonItem работает, но дает мне квадратную, а не угловую кнопку Back-style - есть несколько хаков онлайн, чтобы сделать эту работунапример, использование изображений для кнопки, но я бы предпочел использовать их только в том случае, если определенно нет «официального» способа сделать это.

  • Установка self.navigationItem.backBarButtonItem - этообычно используется для настройки кнопки «Назад» при нажатии на контроллер представления, поэтому это не имеет никакого эффекта.

  • [self.navigationController.navigationBar setItems ::] - это работает, хотя и дает мнескользящая анимация, а не затухание.В результате я использую анимацию: НЕТ, чтобы она просто появилась.Недостаток: при нажатии Back вы do получаете анимацию выдвижения, которая выглядит странно, поскольку остальная часть пользовательского интерфейса остается неподвижной.

Кто-нибудь сумел повторить этоэффект?

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 20 августа 2015

Лучше поздно, чем никогда.

Чтобы отобразить кнопку возврата без нажатия на контроллер вида, используйте pushNavigationItem:animated: и popNavigationItemAnimated: на UINavigationBar.Это приводит к стандартной анимации слайдов и созданию кнопки возврата.Тем не менее, нет никакого способа гарантировать, что ваша анимация контента будет работать в то же время, что и анимация панели, кроме как сделать обоснованное предположение на этой продолжительности.

Начиная с iOS 7, существует лучший API для достижения этого эффекта, гдевы по-прежнему нажимаете и выдвигаете контроллеры представления, но вы предоставляете пользовательскую анимацию перехода через navigationController:animationControllerForOperation:fromViewController:toViewController: из UINavigationControllerDelegate.Это позволяет идеально координировать анимацию между панелью и содержимым.

Наконец, если ваш контент до и после управляется UICollectionViewController, вы можете использовать useLayoutToLayoutNavigationTransitions, чтоПредназначен для случаев использования, таких как Фото.

0 голосов
/ 31 мая 2012

Ваш первый подход, вероятно, самый лучший.

Он не должен быть супер-хакерским, вы можете использовать обычный UIButton и настроить его, чтобы он выглядел как кнопка "назад", используя backgroundImageForState:и titleForState: (и т. д.), затем установите объект UIButton в качестве customView вашего UIBarButtonItem.

Многие приложения в наши дни настраивают внешний вид кнопок в любом случае, поэтому, используяПользовательское фоновое изображение вполне нормально.Если вы используете resizableImageWithCapInsets: (или stretchableImageWithLeftCapWidth:topCapHeight:, если вам нужно поддерживать iOS раньше, чем 5.0), тогда кнопка все еще может растягиваться, чтобы уместиться в любой текст, входящий внутрь, и, как обычно, UIButton текст может быть локализован и т. Д. Iне считайте этот подход хакерским, это совершенно разумный способ обойти ограниченную функциональность UIBarButtonItem объектов.

...