2013-10-11 3 views
0

Как говорится в названии, я хочу создать пользовательский UIActionSheet/UIView, в котором есть некоторые объекты внутри него, такие как метки, кнопки, ячейка таблицы и т. Д. Я хочу реплицировать это: http://i.imgur.com/cPPDTeV.pngСоздание пользовательского UIActionSheet/UIView с UILabels и UITableViewCell

Я предполагаю, что это индивидуальный лист UIActionSheet, в котором они добавили ярлыки и изображения внутри кнопки ButtonAtIndex или что они пошли дальше и сделали пользовательский UIView и анимированные, идущие снизу вверху страницы. В любом случае, может ли кто-нибудь научить меня чему-то подобному? Любые предложения, код, ссылки на сайты или руководство будут оценены.

+0

Это может быть дочерний viewController. – Jonathan

+0

@ Jonathan Вот что я думал, но не был уверен. – Chris

ответ

1

Похож на пользовательский UIView для меня. Вы можете сделать свое представление в IB или программно. Что касается тиражирования анимации, это может быть полезно для вас:

http://www.cocoawithlove.com/2009/05/intercepting-status-bar-touches-on.html

В этом учебнике показано, сверху вниз, но вы должны быть в состоянии переключиться вокруг значений. Будет хорошо, чтобы узнать UIView анимации с использованием блоков, которые могут быть извлечены здесь:

http://www.raywenderlich.com/2454/uiview-tutorial-for-ios-how-to-use-uiview-animation

+0

СПАСИБО! Это здорово, потрясающе! Если бы я смог проголосовать за ваш ответ, я бы (всего 14 пунктов). Первая ссылка - это то, о чем говорил Тейлор, я предполагаю. Спасибо, вы вошли в сцепление с этими двумя ссылками! – Chris

+0

Рад, что это помогло. Пожалуйста, нажмите галочку рядом с ответом, чтобы показать этот вопрос как разрешенный. – JeffN

3

На iOS7, вы можете добиться этого очень легко, используя новую функцию поддержки перехода пользовательского модального в UIKit используя UIModalPresentationCustom и transitioningDelegate.

Используя их, вы можете создать контроллер представления с представлением, созданным для представления того, что вам нужно, а затем представить его с помощью анимации по вашему выбору в делете делегата перехода.

Более подробная информация здесь: https://developer.apple.com/library/ios/documentation/uikit/reference/UIViewControllerTransitioningDelegate_protocol/Reference/Reference.html#//apple_ref/occ/intf/UIViewControllerTransitioningDelegate

Вы можете найти отличные примеры здесь, как работать с переходящих делегатом здесь: https://github.com/ColinEberhardt/VCTransitionsLibrary

+0

Интересно! Я не знал, что это возможно.Я обязательно посмотрю на это. Благодаря! – Chris

0

Что вы хотите сделать 100% является вызовом для пользовательских UIView.

У вас есть 2 общих вариантов реализации:

  1. другое представление наверх текущего вида, анимировать его, как вам хотелось бы, и иметь текущий UIViewController акт, как это контроллер.

  2. Создайте отдельный UIViewController для обработки взаимодействий с этим представлением. Как отметил Лео, существует API iOS 7 для пользовательских переходов для контроллеров View, которые хотят представить другие контроллеры View. Вы должны знать, что этот API немного запутан и может сбивать с толку вначале. Но, вероятно, это будет лучший способ добиться внешнего вида, который вы представили на картинке.

Если вы ОК с полным перекрытием экрана, идти вперед и пропустить Выборочная переходная модель и использовать опцию UIModalPresentationFullScreen под свойством modalPresentationStyle нового вида контроллера.

+0

Добавлена ​​ссылка на отличный проект в GitHub, который демонстрирует, как использовать персонализированный делегат перехода и как выполнять эти анимации. –

+0

Это здорово - примеры стоят дороже, чем документы. Просто заявив, что даже с примерами API-интерфейс перехода iOS7 немного жестко. И, по-моему, не очень испечен. Один пример - если вы обрабатываете движение по ландшафту, вид контейнера, предоставленный вам переходным текстом, не распознает текущее вращение. Это заставляет вас переделать все ваши анимации для поддержки. –

+0

Согласен. В целом, iOS7 не готов. Но это все же лучше, чем ничего, потому что реализовать их в iOS6, это очень раздражает, и вам нужно много работать с родительскими/дочерними контроллерами. –

Смежные вопросы