UIDynamicAnimator
Оператор импорта
Swift
import UIKit
Objective C
@import UIKit;
Доступность
Доступный в iOS 7.0 и позже.
Динамический аниматор обеспечивает связанные с физикой возможности и анимации для его динамических элементов, и обеспечивает контекст для тех анимаций. Это делает это путем посредничания между базовым механизмом физики iOS и динамическими элементами, через поведение возражает, что Вы добавляете к аниматору.
Динамическим элементом является любой iOS или пользовательский объект, соответствующий UIDynamicItem
протокол. UIView
и UICollectionViewLayoutAttributes
классы реализуют этот протокол, запускающийся в iOS 7.0. Можно реализовать этот протокол для использования динамического аниматора с пользовательскими объектами в таких целях как реакция на вращение или изменения позиции, вычисленные аниматором.
Для использования динамики сконфигурируйте один или несколько динамические способы поведения — включая обеспечение каждого с рядом динамических элементов — и затем добавьте те способы поведения к динамическому аниматору.
Вы указываете динамические способы поведения с помощью любого iOS примитивные динамические классы поведения: UIAttachmentBehavior
, UICollisionBehavior
, UIDynamicItemBehavior
, UIGravityBehavior
, UIPushBehavior
, и UISnapBehavior
. Каждый из них обеспечивает параметры конфигурации и позволяет Вам связаться один или несколько динамические элементы к поведению. Для активации поведения добавьте его к аниматору.
Динамический аниматор взаимодействует с каждым из его динамических элементов следующим образом:
Прежде, чем добавить элемент к поведению, Вы указываете стартовую позицию элемента, вращение и границы (для этого используют свойства класса элемента, такой как
center
,transform
, иbounds
свойства в случае aUIView
- основанный элемент)После того, как Вы добавите поведение к аниматору, аниматор вступает во владение: это обновляет позицию и вращение элемента, поскольку анимация продолжается (см.
UIDynamicItem
протокол)Можно программно обновить состояние элемента посреди анимации, после которой аниматор берет на себя назад управление анимации элемента относительно состояния, которое Вы указали (см.
updateItemUsingCurrentState:
метод)
Можно определить составные способы поведения с помощью addChildBehavior:
метод UIDynamicBehavior
родительский класс поведения. Набор способов поведения, которые Вы добавляете к аниматору, составляет иерархию поведения. Каждый экземпляр поведения, который Вы связываете с аниматором, может присутствовать только один раз в иерархии.
Для найма динамического аниматора сначала идентифицируйте тип динамических элементов, которые Вы хотите анимировать. Этот выбор определяет, какой инициализатор вызвать, и это поочередно определяет, как система координат будит набор. Эти три способа инициализировать аниматора, динамические элементы, которые можно тогда использовать, и получающаяся система координат, следующие:
Для анимации представлений создайте аниматора с
initWithReferenceView:
метод. Система координат ссылочного ракурса служит системой координат для способов поведения и элементов аниматора. Каждый динамический элемент, который Вы связываете с этим видом аниматора, должен быть aUIView
возразите и должен убывать от ссылочного ракурса.Можно определить границу, для элементов, участвующих в поведении коллизии, относительно границ ссылочного ракурса. Посмотрите
setTranslatesReferenceBoundsIntoBoundaryWithInsets:
метод.Для анимации представлений набора создайте аниматора с
initWithCollectionViewLayout:
метод. Получающийся аниматор использует расположение представления набора (объектUICollectionViewLayout
класс) для его системы координат. Динамические элементы в этом виде аниматора должны бытьUICollectionViewLayoutAttributes
объекты, которые являются частью расположения.Можно определить границу, для элементов, участвующих в поведении коллизии, относительно границ расположения представления набора. Посмотрите
setTranslatesReferenceBoundsIntoBoundaryWithInsets:
метод.Аниматор представления набора автоматически вызывает
invalidateLayout
метод по мере необходимости, и автоматически паузы и анимация резюме, как надлежащий, когда Вы изменяете расположение представления набора.Нанять динамического аниматора с другими объектами, соответствующими
UIDynamicItem
протокол, создайте аниматора с наследованнымinit
метод. Получающийся аниматор использует абстрактную систему координат, не связанную к экрану или к любому представлению.Нет никакой ссылочной границы для обращения к при определении границы коллизии для использования с этим видом аниматора. Однако Вы можете все еще, в поведении коллизии, указывать пользовательские границы, как описано в Ссылке класса UICollisionBehavior.
Все типы динамических аниматоров совместно используют следующие характеристики:
Каждый динамический аниматор независим от других динамических аниматоров, которых Вы создаете
Можно связать данный динамический элемент с многократными способами поведения, если те способы поведения принадлежат тому же аниматору
Аниматор автоматически паузы, когда все его элементы в покое, и автоматически возобновляют, когда параметр поведения изменяется или поведение или элемент, добавлен или удален
Можно реализовать делегата для реакции на изменения в состоянии паузы/возобновления аниматора, с помощью dynamicAnimatorDidPause:
и dynamicAnimatorWillResume:
методы UIDynamicAnimatorDelegate
протокол.
-
Инициализирует динамического аниматора с указанным представлением как его ссылочный ракурс.
Объявление
Swift
init(referenceView
view
: UIView)Objective C
- (instancetype)initWithReferenceView:(UIView *)
view
Параметры
view
Представление для динамического аниматора, названного ссылочным ракурсом.
Возвращаемое значение
Инициализированный динамический аниматор, или
nil
если была проблема, инициализирующая объект.Обсуждение
При инициализации динамического аниматора с этим методом способы поведения (и их динамические элементы), что Вы добавляете к аниматору, используют систему координат ссылочного ракурса.
Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 7.0 и позже.
-
Инициализирует динамического аниматора с указанным расположением представления набора.
Объявление
Swift
init(collectionViewLayout
layout
: UICollectionViewLayout)Objective C
- (instancetype)initWithCollectionViewLayout:(UICollectionViewLayout *)
layout
Параметры
layout
Расположение представления набора для динамического аниматора, служа ссылочным ракурсом для динамического аниматора в режиме представления набора.
Возвращаемое значение
Инициализированный динамический аниматор, или
nil
если была проблема, инициализирующая объект.Обсуждение
При инициализации динамического аниматора с этим методом способы поведения (и их динамические элементы), что Вы добавляете к аниматору, используют систему координат расположения представления набора.
Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 7.0 и позже.
-
Возвращает динамические элементы, от способов поведения аниматора, пересекающих указанный прямоугольник.
Объявление
Swift
func itemsInRect(_
rect
: CGRect) -> [AnyObject]Параметры
rect
Прямоугольник Вы интересуетесь.
Возвращаемое значение
Динамические элементы, от способов поведения аниматора, пересекающих указанный прямоугольник.
Обсуждение
Система координат, принадлежащая
rect
параметр зависит от того, как Вы инициализировали аниматора, как описано в Обзоре в этом документе.Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 7.0 и позже.
-
Добавляет динамическое поведение к динамическому аниматору.
Объявление
Swift
func addBehavior(_
behavior
: UIDynamicBehavior!)Objective C
- (void)addBehavior:(UIDynamicBehavior *)
behavior
Параметры
behavior
Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 7.0 и позже.
-
Удаляет указанное динамическое поведение от динамического аниматора.
Объявление
Swift
func removeBehavior(_
behavior
: UIDynamicBehavior!)Objective C
- (void)removeBehavior:(UIDynamicBehavior *)
behavior
Параметры
behavior
Динамический экземпляр поведения, который Вы хотите удалить от аниматора.
Динамический аниматор игнорирует Ваше использование этого метода если Вы:
Обеспечьте a
nil
значениеОбеспечьте динамический экземпляр поведения, который не является частью иерархии поведения аниматора
Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 7.0 и позже.
-
Удаляет все динамические способы поведения от динамического аниматора.
Объявление
Swift
func removeAllBehaviors()
Objective C
- (void)removeAllBehaviors
Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 7.0 и позже.
-
Возвращает временной интервал, так как динамический аниматор начал работать.
Возвращаемое значение
Прошедшее время, так как динамический аниматор начал работать.
Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 7.0 и позже.
-
running
СвойствоВозвраты
YES
true
если работает динамический аниматор. (только для чтения)Объявление
Swift
var running: Bool { get }
Objective C
@property(nonatomic, readonly, getter=isRunning) BOOL running
Обсуждение
Представления, связанные со способами поведения аниматора, могут сменить положение, или изменение преобразовывают только, когда работает аниматор. В целях оптимизации iOS может приостановить и затем перезапустить аниматора. Используйте этот метод, если необходимо проверить, подвергаются ли представления в настоящее время изменениям в позиции или преобразовывают.
Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 7.0 и позже.
-
behaviors
СвойствоДинамические способы поведения, которыми управляет динамический аниматор. (только для чтения)
Объявление
Swift
var behaviors: [AnyObject] { get }
Objective C
@property(nonatomic, readonly, copy) NSArray *behaviors
Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 7.0 и позже.
-
referenceView
СвойствоПредставление, что динамический аниматор был инициализирован с. (только для чтения)
Объявление
Swift
var referenceView: UIView? { get }
Objective C
@property(nonatomic, readonly) UIView *referenceView
Обсуждение
Это свойство имеет значение только для динамического аниматора, инициализированного с помощью
initWithReferenceView:
метод.Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 7.0 и позже.
-
delegate
СвойствоДелегат к ответу на приостановку или возобновление анимации.
Объявление
Swift
unowned(unsafe) var delegate: UIDynamicAnimatorDelegate?
Objective C
@property(nonatomic, assign) id< UIDynamicAnimatorDelegate > delegate
Обсуждение
Методы для динамического делегата аниматора описаны в Ссылке на протокол UIDynamicAnimatorDelegate.
Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 7.0 и позже.
-
Просит динамический аниматор читать текущее состояние динамического элемента, заменяя внутреннее представление аниматора состояния элемента.
Объявление
Swift
func updateItemUsingCurrentState(_
item
: UIDynamicItem)Objective C
- (void)updateItemUsingCurrentState:(id<UIDynamicItem>)
item
Параметры
item
Динамический элемент, состояние которого было изменено Вашим приложением.
Обсуждение
Динамический аниматор автоматически читает начальное состояние (позиция и вращение) каждого динамического элемента, который Вы добавляете к нему, и затем берет на себя ответственность за обновление состояния элемента. При активном изменении состояния динамического элемента после того, как Вы добавили его к динамическому аниматору, вызовите этот метод, чтобы попросить, чтобы аниматор считал и включил новое состояние.
Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 7.0 и позже.
-
Удобный метод для возврата атрибутов макета для набора просматривает ячейку.
Объявление
Swift
func layoutAttributesForCellAtIndexPath(_
indexPath
: NSIndexPath) -> UICollectionViewLayoutAttributes!Objective C
- (UICollectionViewLayoutAttributes *)layoutAttributesForCellAtIndexPath:(NSIndexPath *)
indexPath
Параметры
indexPath
Индексный путь для ячейки, атрибуты макета которой Вы хотите.
Возвращаемое значение
Атрибуты макета представления набора для указанного набора просматривают ячейку.
Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 7.0 и позже.
-
layoutAttributesForDecorationViewOfKind (_: atIndexPath:) - layoutAttributesForDecorationViewOfKind:atIndexPath:
Удобный метод для возврата атрибутов макета для набора просматривает представление художественного оформления.
Объявление
Swift
func layoutAttributesForDecorationViewOfKind(_
decorationViewKind
: String, atIndexPathindexPath
: NSIndexPath) -> UICollectionViewLayoutAttributes!Objective C
- (UICollectionViewLayoutAttributes *)layoutAttributesForDecorationViewOfKind:(NSString *)
decorationViewKind
atIndexPath:(NSIndexPath *)indexPath
Параметры
decorationViewKind
Добрый идентификатор для указанного представления художественного оформления.
indexPath
Индексный путь для ячейки, атрибуты макета представления художественного оформления которой Вы хотите.
Возвращаемое значение
Атрибуты макета представления набора для указанного представления художественного оформления.
Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 7.0 и позже.
-
layoutAttributesForSupplementaryViewOfKind (_: atIndexPath:) - layoutAttributesForSupplementaryViewOfKind:atIndexPath:
Удобный метод для возврата атрибутов макета для набора просматривает дополнительное представление.
Объявление
Swift
func layoutAttributesForSupplementaryViewOfKind(_
kind
: String, atIndexPathindexPath
: NSIndexPath) -> UICollectionViewLayoutAttributes!Objective C
- (UICollectionViewLayoutAttributes *)layoutAttributesForSupplementaryViewOfKind:(NSString *)
kind
atIndexPath:(NSIndexPath *)indexPath
Параметры
kind
Строка, идентифицирующая тип дополнительного представления, атрибуты макета которого Вы хотите.
indexPath
Индексный путь для ячейки, дополнительные атрибуты макета представления которой Вы хотите.
Возвращаемое значение
Атрибуты макета представления набора для указанного дополнительного представления.
Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 7.0 и позже.