UICollisionBehavior
Наследование
-
NSObject
-
UIDynamicBehavior
-
UICollisionBehavior
-
NSObject
-
UIDynamicBehavior
-
UICollisionBehavior
Оператор импорта
Swift
import UIKit
Objective C
@import UIKit;
Доступность
Доступный в iOS 7.0 и позже.
Поведение коллизии совещается, к указанному массиву динамических элементов, возможности тех элементов участвовать в коллизиях друг с другом и с указанными границами поведения. Поведение коллизии также указывает некоторые характеристики коллизий своих элементов с другими характеристиками, дополнительно указанными a UIDynamicItemBehavior
объект.
Динамическим элементом является любой iOS или пользовательский объект, соответствующий UIDynamicItem
протокол. UIView
и UICollectionViewLayoutAttributes
классы реализуют этот протокол, запускающийся в iOS 7.0. Можно использовать пользовательский объект в качестве динамического элемента в таких целях как реакция на вращение или изменения позиции, вычисленные динамическим аниматором — экземпляр UIDynamicAnimator
класс.
Для использования поведения коллизии с динамическим элементом выполните эти два шага:
Свяжите элемент с поведением с помощью
addItem:
метод, или инициализируют новое поведение коллизии с массивом элементов с помощьюinitWithItems:
метод.Включите поведение путем добавления его к аниматору, использующему
addBehavior:
метод
Система координат, принадлежащая поведению коллизии и типам динамических элементов, которые можно использовать с поведением, зависеть от того, как Вы инициализировали связанного аниматора. Для получения дополнительной информации считайте Обзор Ссылки класса UIDynamicAnimator.
Можно добавить многократные способы поведения коллизии к динамическому аниматору. Динамический элемент может быть частью любого числа способов поведения коллизии, если те способы поведения принадлежат тому же аниматору. Например, можно указать, что поведение коллизии для ряда говорит, синий, элементы и другой для, скажем, розовых элементов. Когда Вы добавляете оба способов поведения к динамическому аниматору, синие элементы могут столкнуться друг с другом, и розовые элементы могут столкнуться друг с другом, но синий элемент и розовый элемент не столкнулись бы — они проигнорируют друг друга.
По умолчанию, коллизия, элементы поведения могут столкнуться друг с другом и с любыми границами, которые Вы указали для поведения. Если Вы хотите указать, что элементы поведения сталкиваются только друг с другом, или только с границами, явно устанавливают collisionMode
свойство.
Можно определить границу коллизии с помощью пути bezier (см. addBoundaryWithIdentifier:forPath:
метод) или с линейным сегментом (см. addBoundaryWithIdentifier:fromPoint:toPoint:
метод). При использовании поведения коллизии с динамическим аниматором, Вы инициализировали со ссылочным ракурсом или расположением представления набора, можно также указать границу коллизии согласно границам системы координат динамического аниматора (см. setTranslatesReferenceBoundsIntoBoundaryWithInsets:
метод).
Для ответа на коллизии реализуйте объект делегата, принимающий UICollisionBehaviorDelegate
протокол. Добавьте делегата в поведении с помощью collisionDelegate
свойство.
Можно включать поведение коллизии в пользовательское, составное поведение начиная с a UIDynamicBehavior
возразите и добавление поведения коллизии с addChildBehavior:
метод. Если Вы хотите влиять на поведение коллизии на каждом шаге динамической анимации, реализуйте наследованный action
метод.
-
Добавляет динамический элемент к массиву элемента поведения коллизии.
Объявление
Swift
func addItem(_
item
: UIDynamicItem)Objective C
- (void)addItem:(id<UIDynamicItem>)
item
Параметры
item
Динамический элемент для добавления к массиву элемента.
Обсуждение
Можно добавить динамический элемент к одним или более способам поведения коллизии. Например, можно использовать два способов поведения коллизии указать, что элемент A может столкнуться с элементом B и что элемент C может столкнуться с элементом D, но это элементы A и B игнорирует элементы C и D.
Нет никакого жесткого предела числу динамических элементов, которые можно добавить к поведению коллизии. Однако добавление большого количества элементов могло бы привести к влиянию производительности. Обязательно протестируйте Ваши способы поведения на конфигурациях устройства, для которых Вы предназначаетесь.
Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 7.0 и позже.
-
Инициализирует поведение коллизии с массивом динамических элементов.
Объявление
Swift
init!(items
items
: [AnyObject])Objective C
- (instancetype)initWithItems:(NSArray *)
items
Параметры
items
Динамические элементы, что Вы хотите участвовать в поведении коллизии.
Возвращаемое значение
Инициализированное поведение коллизии, или
nil
если была проблема, инициализирующая объект.Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 7.0 и позже.
-
Удаляет определенный динамический элемент из поведения коллизии.
Объявление
Swift
func removeItem(_
item
: UIDynamicItem)Objective C
- (void)removeItem:(id<UIDynamicItem>)
item
Параметры
item
Динамический элемент, который Вы хотите удалить.
Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 7.0 и позже.
-
items
СвойствоВозвращает набор динамических элементов, которые Вы добавили к поведению коллизии. (только для чтения)
Объявление
Swift
var items: [AnyObject] { get }
Objective C
@property(nonatomic, readonly, copy) NSArray *items
Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 7.0 и позже.
-
Добавляет граница коллизии, указанная как путь Безье, к поведению коллизии.
Объявление
Swift
func addBoundaryWithIdentifier(_
identifier
: NSCopying, forPathbezierPath
: UIBezierPath)Objective C
- (void)addBoundaryWithIdentifier:(id<NSCopying>)
identifier
forPath:(UIBezierPath *)bezierPath
Параметры
identifier
Произвольный идентификатор для границы Вы добавляете.
bezierPath
Произвольный путь Безье, указывающий границу коллизии, которую Вы добавляете.
Система координат и точка источника для пути зависят от того, как Вы инициализировали динамического аниматора (что Вы добавляете поведение к). См. обзор в Ссылке класса UIDynamicAnimator для получения дополнительной информации.
Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 7.0 и позже.
-
Добавляет граница коллизии, указанная как линейный сегмент, к поведению коллизии.
Объявление
Параметры
identifier
Произвольный идентификатор для границы Вы добавляете.
p1
Начальная точка для сегмента границы.
p2
Конечная точка для сегмента границы.
Обсуждение
Это - удобный метод на основе
addBoundaryWithIdentifier:forPath:
метод. Система координат и источник указывают дляp1
иp2
параметры зависят от того, как Вы инициализировали динамического аниматора (что Вы добавляете поведение к). См. обзор в Ссылке класса UIDynamicAnimator для получения дополнительной информации.Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 7.0 и позже.
См. также
-
boundaryIdentifiers
СвойствоНабор граничных идентификаторов, которые Вы добавили к поведению коллизии. (только для чтения)
Объявление
Swift
var boundaryIdentifiers: [AnyObject]? { get }
Objective C
@property(nonatomic, readonly, copy) NSArray *boundaryIdentifiers
Обсуждение
Если Вы не добавили граничных идентификаторов к поведению коллизии, значение этого свойства
nil
.Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 7.0 и позже.
-
Возвращает указанную границу Bezier-пути.
Объявление
Swift
func boundaryWithIdentifier(_
identifier
: NSCopying) -> UIBezierPath?Objective C
- (UIBezierPath *)boundaryWithIdentifier:(id<NSCopying>)
identifier
Параметры
identifier
Граничный идентификатор, который Вы ранее добавили к поведению коллизии.
Возвращаемое значение
Граница Bezier-пути.
Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 7.0 и позже.
-
collisionDelegate
СвойствоОбъект делегата, что Вы хотите реагировать на коллизии для поведения коллизии.
Объявление
Swift
unowned(unsafe) var collisionDelegate: UICollisionBehaviorDelegate?
Objective C
@property(nonatomic, assign, readwrite) id< UICollisionBehaviorDelegate > collisionDelegate
Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 7.0 и позже.
-
collisionMode
СвойствоТип краев, участвующих в коллизиях для поведения коллизии.
Объявление
Swift
var collisionMode: UICollisionBehaviorMode
Objective C
@property(nonatomic, readwrite) UICollisionBehaviorMode collisionMode
Обсуждение
Указать
collisionMode
, используйте одно из значений в перечислении UICollisionBehaviorMode. Значение по умолчаниюUICollisionBehaviorModeEverything
.Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 7.0 и позже.
-
Удаляет все ранее указанные границы коллизии из поведения коллизии.
Объявление
Swift
func removeAllBoundaries()
Objective C
- (void)removeAllBoundaries
Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 7.0 и позже.
-
Удаляет определенную границу коллизии из поведения коллизии.
Объявление
Swift
func removeBoundaryWithIdentifier(_
identifier
: NSCopying)Objective C
- (void)removeBoundaryWithIdentifier:(id<NSCopying>)
identifier
Параметры
identifier
Идентификатор границы Вы хотите удалить.
Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 7.0 и позже.
-
setTranslatesReferenceBoundsIntoBoundaryWithInsets (_:) - setTranslatesReferenceBoundsIntoBoundaryWithInsets:
Указывает границу коллизии на основе границ ссылочной системы анимации, с дополнительными вставками.
Объявление
Swift
func setTranslatesReferenceBoundsIntoBoundaryWithInsets(_
insets
: UIEdgeInsets)Objective C
- (void)setTranslatesReferenceBoundsIntoBoundaryWithInsets:(UIEdgeInsets)
insets
Параметры
insets
Вставки для применения к границам ссылочной системы при определении границы коллизии.
Обсуждение
Результат использования этого метода зависит от того, как Вы инициализировали динамического аниматора (класса
UIDynamicAnimator
) то, что Вы добавили поведение коллизии к. См. обзор в Ссылке класса UIDynamicAnimator для обсуждения опций инициализации и режимов для аниматоров.Вот то, как инициализация динамического аниматора влияет на использование этого метода:
Для динамического аниматора только для представления ссылочные границы являются теми из ссылочного ракурса
Для представления набора динамический аниматор ссылочные границы являются теми из расположения представления набора
Для динамического элемента динамический аниматор нет никаких ссылочных границ.
Для поведения коллизии, добавленного к только для представления или представлению набора динамический аниматор, активируйте основанную на ссылке-системой границу коллизии путем установки
translatesReferenceBoundsIntoBoundary
свойство кYES
true
.Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 7.0 и позже.
-
Указывает, активна ли граница на основе ссылочной системы.
Объявление
Swift
var translatesReferenceBoundsIntoBoundary: Bool
Objective C
@property(nonatomic, readwrite) BOOL translatesReferenceBoundsIntoBoundary
Обсуждение
Для указания границы коллизии на основе ссылочной системы используйте
setTranslatesReferenceBoundsIntoBoundaryWithInsets:
метод.Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 7.0 и позже.
-
Типы краев, участвующих в коллизиях для поведения коллизии.
Объявление
Swift
struct UICollisionBehaviorMode : RawOptionSetType { init(_
rawValue
: UInt) init(rawValuerawValue
: UInt) static var Items: UICollisionBehaviorMode { get } static var Boundaries: UICollisionBehaviorMode { get } static var Everything: UICollisionBehaviorMode { get } }Objective C
typedef NS_OPTIONS (NSUInteger, UICollisionBehaviorMode ) { UICollisionBehaviorModeItems = 1 << 0, UICollisionBehaviorModeBoundaries = 1 << 1, UICollisionBehaviorModeEverything = NSUIntegerMax };
Константы
-
Items
UICollisionBehaviorModeItems
Указывает, что динамические элементы, связанные с поведением коллизии, сталкиваются только друг с другом а не с указанными границами коллизии.
Доступный в iOS 7.0 и позже.
-
Boundaries
UICollisionBehaviorModeBoundaries
Указывает, что динамические элементы, связанные с поведением коллизии, сталкиваются только с указанными границами коллизии и не сталкиваются друг с другом.
Доступный в iOS 7.0 и позже.
-
Everything
UICollisionBehaviorModeEverything
Указывает, что динамические элементы, связанные с поведением коллизии, сталкиваются друг с другом и с указанными границами коллизии.
Это - режим поведения коллизии по умолчанию.
Доступный в iOS 7.0 и позже.
Оператор импорта
Objective C
@import UIKit;
Swift
import UIKit
Доступность
Доступный в iOS 7.0 и позже.
-