iOS. Приемы программирования
Шрифт:
Итак, определим аниматор и вид:
Далее
Если вы не хотите добавлять тяготение ко всем вашим видам, как только инициализируете это поведение, то можете добавить его позже с помощью метода экземпляра addItem:, относящегося к классу UIGravityBehavior. Этот метод также принимает объект, соответствующий указанному ранее протоколу.
Теперь запустите ваше приложение. Как только вид в контроллере появится на экране, вы увидите цветной квадрат, падающий из центра экрана вниз, до нижнего края, а потом скрывающийся за пределами дисплея. Поведение тяготения, точно как реальная сила тяжести, заставляет элементы двигаться вниз, вплоть до определенной границы. Поскольку в данном случае никакой границы нет, элемент падает вниз до бесконечности. Мы исправим этот недостаток позже в данной главе, реализовав для элементов поведение столкновения.
См. также
Раздел 2.0.
2.2. Обнаружение столкновений между компонентами пользовательского интерфейса и реагирование на них
Постановка задачи
Требуется задать на экране границы столкновений между компонентами вашего пользовательского интерфейса так, чтобы эти компоненты не перекрывали друг друга.
Решение
Инстанцируйте
Обсуждение
Поведение столкновения, относящееся к типу UICollisionBehavior, затрагивает объекты, соответствующие протоколу UIDynamicItem. Все виды типа UIView уже ему соответствуют, поэтому вам придется лишь инстанцировать ваши виды и добавить их к поведению столкновения. Поведение столкновения требует определить на экране границы, которые будут непреодолимы для элементов, находящихся в аниматоре. Например, если вы зададите линию, которая будет идти из нижнего левого угла вашего опорного вида в нижний правый угол (соответственно, это будет линия, вплотную прилегающая к его нижнему краю), а также добавите к этому виду поведение тяготения, то виды, расположенные на экране, будут двигаться под действием тяготения вниз, но не смогут «провалиться» с экрана, так как столкнутся с его нижним краем, который задается поведением столкновения.
Если вы хотите, чтобы границы области, в которой действует поведение столкновения, совпадали с границами опорного вида, то присвойте свойству translatesReferenceBoundsIntoBoundary экземпляра поведения столкновения значение YES. Если хотите самостоятельно провести линии, соответствующие границам такой области, просто воспользуйтесь методом экземпляра addBoundaryWithIdentifier: fromPoint: toPoint:, относящимся к классу UICollisionBehavior.
В этом примере мы собираемся создать два цветных вида, один из которых расположен на другом. После этого добавим к аниматору поведение тяготения, чтобы эти виды не перекрывали друг друга. Кроме того, они не будут выходить за границы опорного вида (то есть вида контроллера).
Итак, для начала определим массив видов и аниматор:
Загадки истории. Факты. Открытия. Люди
Научно-образовательная:
история
рейтинг книги
Кодекс Охотника. Книга XL
40. Кодекс Охотника
Фантастика:
аниме
фэнтези
попаданцы
рейтинг книги
Атлантида
15. Дирк Питт
Детективы:
боевики
рейтинг книги
Управленческая элита. Как мы ее отбираем и готовим
Деловая литература:
управление, подбор персонала
рейтинг книги
12 тем. Маркетинг 21 века
Документальная литература:
публицистика
рейтинг книги
Второгодка. Книга 2. Око за око
2. Второгодка
Фантастика:
героическая фантастика
альтернативная история
фэнтези
рейтинг книги
Когда небо стало пеплом, а земля инеем. Часть 1
1. Иней и пепел
Фантастика:
юмористическое фэнтези
уся
фэнтези
рейтинг книги
Бастард Императора. Том 8
8. Бастард Императора
Фантастика:
попаданцы
аниме
фэнтези
рейтинг книги
Миры Источника. Трилогия
19. В одном томе
Фантастика:
фэнтези
рейтинг книги
Звёздные корабли. Туманность Андромеды (ил. И. Шалито, Г. Бойко)
Мир приключений изд. Правда
Фантастика:
научная фантастика
рейтинг книги
Стихотворения
Поэзия:
поэзия
рейтинг книги
США: История страны
Биографии Великих Стран
Научно-образовательная:
история
рейтинг книги