/* ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠ³ΠΎΠ» ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅Π½ΡΡΠΎΠΌ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° ΠΈ ΡΠΎΡΠΊΠΎΠΉ ΠΊΠ°ΡΠ°Π½ΠΈΡ */
CGPoint tapPoint = [paramTap locationInView: self.view];
if (self.snapBehavior!= nil){
[self.animator removeBehavior: self.snapBehavior];
}
self.snapBehavior = [[UISnapBehavior alloc] initWithItem: self.squareView
snapToPoint: tapPoint];
self.snapBehavior.damping = 0.5f; /* Π‘ΡΠ΅Π΄Π½ΡΡ ΠΎΡΡΠΈΠ»Π»ΡΡΠΈΡ */
[self.animator addBehavior: self.snapBehavior];
}
Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅
Π Π°Π·Π΄Π΅Π»Ρ 2.0 ΠΈ 10.5.
2.6. ΠΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΡΡΠ΅ΠΊΡΠ°ΠΌ
ΠΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°ΡΠΈ
ΠΠ΅ΡΠΎΡΡΠ½ΠΎ, Π²Π°Ρ ΡΡΡΡΠ°ΠΈΠ²Π°Π΅Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ ΡΠΈΠ·ΠΈΠΊΠ°, ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π²ΡΡΡΠΎΠ΅Π½Π½Π°Ρ Π² Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΈΠ· UIKit. ΠΠΎ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠΌΠΈ Π²Ρ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΉ, ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡΡΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°ΡΡ ΡΡΠΈΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ ΠΈ ΠΈΠ½ΡΠ΅ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΌΠ°ΡΡΡ ΠΈ ΡΠ»Π°ΡΡΠΈΡΠ½ΠΎΡΡΡ.
Π Π΅ΡΠ΅Π½ΠΈΠ΅
ΠΠ½ΡΡΠ°Π½ΡΠΈΡΡΠΉΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΈΠΏΠ° UIDynamicItemBehavior ΠΈ ΠΏΡΠΈΡΠ²ΠΎΠΉΡΠ΅ Π΅ΠΌΡ Π²Π°ΡΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ. ΠΠΎΡΠ»Π΅ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌΠΈ ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². ΠΠ°ΡΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΡΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊ Π°Π½ΠΈΠΌΠ°ΡΠΎΡΡ (ΡΠΌ. ΡΠ°Π·Π΄Π΅Π» 2.0) β ΠΈ Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠ΅ Π°Π½ΠΈΠΌΠ°ΡΠΎΡ ΡΠ΄Π΅Π»Π°Π΅Ρ Π·Π° Π²Π°Ρ.
ΠΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅
ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ Π΄Π»Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΡΠ΅Π°Π»ΠΈΡΡΠΈΡΠ½ΠΎΠΉ ΡΠΈΠ·ΠΈΠΊΠΈ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ UIDynamicItem, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎ Π²ΡΠ΅ΠΌ Π²ΠΈΠ΄Π°ΠΌ ΡΠΈΠΏΠ° UIView. ΠΠΎ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡΡ ΡΠ²Π½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π³Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΡΡΠ΅ΠΊΡΡ ΡΡΠ³ΠΎΡΠ΅Π½ΠΈΡ ΠΈ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ (ΡΠΌ. ΡΠ°Π·Π΄Π΅Π»Ρ 2.1 ΠΈ 2.2), Π²Ρ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π·Π°Ρ ΠΎΡΠΈΡΠ΅ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π½Π° ΡΠΊΡΠ°Π½Π΅, ΠΏΠΎΠ΄Π²Π΅ΡΠ³Π°ΡΡΠΈΠΉΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΡΡΠ³ΠΎΡΠ΅Π½ΠΈΡ ΠΈ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡΠΌ, Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡΡΠΊΠ°ΠΊΠΈΠ²Π°ΡΡ ΠΎΡ Π³ΡΠ°Π½ΠΈΡΡ ΡΠΈΠ»ΡΠ½Π΅Π΅, ΡΠ΅ΠΌ Π΄ΡΡΠ³ΠΎΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ. Π Π΄ΡΡΠ³ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π·Π°Ρ ΠΎΡΠΈΡΠ΅ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ Π² Ρ ΠΎΠ΄Π΅ Π²ΠΎΠΏΠ»ΠΎΡΠ΅Π½ΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΡΡ ΡΡΡΠ΅ΠΊΡΠΎΠ², ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ Π°Π½ΠΈΠΌΠ°ΡΠΎΡΠΎΠΌ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, ΡΡΠΎΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΠ°ΡΠ°ΡΡΡΡ.
ΠΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ ΡΠ΅ΡΠ°ΡΡΡΡ Π±Π΅Π· ΡΡΡΠ΄Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² ΠΊΠ»Π°ΡΡΠ° UIDynamicItemBehavior. ΠΡΠΈ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΡΠ°ΠΊΠΆΠ΅ ΡΠ²Π»ΡΡΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡΠΌΠΈ, ΠΈ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΈΡ ΠΊ Π°Π½ΠΈΠΌΠ°ΡΠΎΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° addBehavior:, ΠΎΡΠ½ΠΎΡΡΡΠ΅Π³ΠΎΡΡ ΠΊ ΠΊΠ»Π°ΡΡΡ UIDynamicAnimator, β Π² ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅ ΠΌΡ ΡΠ°ΠΊ ΡΠΆΠ΅ Π΄Π΅Π»Π°Π»ΠΈ. ΠΠΎΠ³Π΄Π° Π²Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°, Π²Ρ Π²ΡΠ·ΡΠ²Π°Π΅ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄-ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡ initWithItems: ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΠ΅ Π²Π°Ρ Π²ΠΈΠ΄ Π»ΠΈΠ±ΠΎ ΠΊΠ°ΠΊΠΎΠΉ ΡΠ³ΠΎΠ΄Π½ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ UIDynamicItem. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° init, Π° ΠΏΠΎΡΠΎΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΊ ΡΡΠΎΠΌΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·Π½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΏΠΎΠ»ΡΠ·ΡΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ addItem:.
ΠΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΠΊΠ»Π°ΡΡΠ° UIDynamicItemBehavior ΠΎΠ±Π»Π°Π΄Π°ΡΡ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΠΌΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΊΠΎΡΡΠ΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΡΠΎΠ±Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΈΠ΄ΠΎΠ²). ΠΠ°Π»Π΅Π΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Ρ ΠΈ ΠΎΠ±ΡΡΡΠ½Π΅Π½Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°.
β’ allowsRotation β Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΡΠ»ΠΈ ΠΎΠ½ΠΎ ΡΠ°Π²Π½ΠΎ YES, ΡΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΠ½ΡΡΠ½ΠΎ ΠΈΠ· Π½Π°Π·Π²Π°Π½ΠΈΡ, ΡΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π°Π½ΠΈΠΌΠ°ΡΠΎΡΡ Π²ΡΠ°ΡΠ°ΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π² Ρ ΠΎΠ΄Π΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊ Π½ΠΈΠΌ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΡΡ ΡΡΡΠ΅ΠΊΡΠΎΠ². Π ΠΈΠ΄Π΅Π°Π»Π΅ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π² YES, Π΅ΡΠ»ΠΈ ΠΆΠ΅Π»Π°Π΅ΡΠ΅ ΠΈΠΌΠΈΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅Π°Π»ΠΈΡΡΠΈΡΠ½ΡΡ ΡΠΈΠ·ΠΈΠΊΡ, Π½ΠΎ Π΅ΡΠ»ΠΈ ΠΏΠΎ ΠΊΠ°ΠΊΠΈΠΌ-ΡΠΎ ΠΏΡΠΈΡΠΈΠ½Π°ΠΌ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π½ΠΈ ΠΏΡΠΈ ΠΊΠ°ΠΊΠΈΡ ΡΡΠ»ΠΎΠ²ΠΈΡΡ Π²ΡΠ°ΡΠ°ΡΡΡΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ, Π·Π°Π΄Π°ΠΉΡΠ΅ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ NO ΠΈ ΠΏΡΠΈΠΊΡΠ΅ΠΏΠΈΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΊ ΡΡΠΎΠΌΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ.
β’ resistance β ΡΠΎΠΏΡΠΎΡΠΈΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ. ΠΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ 0 Π΄ΠΎ CGFLOAT_MAX. Π§Π΅ΠΌ Π²ΡΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΠ΅ΠΌ ΡΠΈΠ»ΡΠ½Π΅Π΅ Π±ΡΠ΄Π΅Ρ ΡΠΎΠΏΡΠΎΡΠΈΠ²Π»Π΅Π½ΠΈΠ΅, ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌΠΎΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ Π²ΠΎΠ·Π΄Π΅ΠΉΡΡΠ²ΡΡΡΠΈΠΌ Π½Π° Π½Π΅Π³ΠΎ ΡΠΈΠ»Π°ΠΌ (ΡΠ΅ΠΌ ΡΠΈΠ»Π°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΊ Π½Π΅ΠΌΡ ΠΏΡΠΈΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΡΠ΅). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π²Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ ΠΊ Π°Π½ΠΈΠΌΠ°ΡΠΎΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΡΠ³ΠΎΡΠ΅Π½ΠΈΡ ΠΈ ΡΠΎΠ·Π΄Π°Π΄ΠΈΡΠ΅ Π² ΡΠ΅Π½ΡΡΠ΅ ΡΠΊΡΠ°Π½Π° Π²ΠΈΠ΄ Ρ ΡΠΎΠΏΡΠΎΡΠΈΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ CGFLOAT_MAX, ΡΠΎ ΡΡΠ³ΠΎΡΠ΅Π½ΠΈΠ΅ Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ ΡΠ΄Π²ΠΈΠ½ΡΡΡ ΡΡΠΎΡ Π²ΠΈΠ΄ ΠΊ ΡΠ΅Π½ΡΡΡ ΡΠΊΡΠ°Π½Π°. ΠΠΈΠ΄ ΠΏΡΠΎΡΡΠΎ ΠΎΡΡΠ°Π½Π΅ΡΡΡ ΡΠ°ΠΌ, Π³Π΄Π΅ Π²Ρ Π΅Π³ΠΎ ΡΠΎΠ·Π΄Π°Π»ΠΈ.
β’ friction β ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ 0 Π΄ΠΎ 1. ΠΠ½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠΈΠ»Ρ ΡΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄ΠΎΠ»ΠΆΠ½Π° Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Π½Π° ΠΊΡΠ°Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°, ΠΊΠΎΠ³Π΄Π° Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠΎΡΠ΄Π°ΡΡΡΡΡΡ Ρ Π½ΠΈΠΌ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΠΊΠ°Π»ΡΠ·ΡΠ²Π°ΡΡ ΠΏΠΎ Π΅Π³ΠΎ ΠΊΡΠ°Ρ. Π§Π΅ΠΌ Π²ΡΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΠ΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ ΡΠΈΠ»Π° ΡΡΠ΅Π½ΠΈΡ, ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΠ°Ρ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ.
Π§Π΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠΈΠ»Π° ΡΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΡ Π²Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΠ΅ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, ΡΠ΅ΠΌ Π±ΠΎΠ»Π΅Π΅ ΠΊΠ»Π΅ΠΉΠΊΠΈΠΌ ΠΎΠ½ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ. Π’Π°ΠΊΠ°Ρ ΡΠΊΠ»ΠΎΠ½Π½ΠΎΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΊ ΠΏΡΠΈΠ»ΠΈΠΏΠ°Π½ΠΈΡ Π²ΡΡΠ°ΠΆΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΊΠΎΠ³Π΄Π° Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Ρ Π½ΠΈΠΌ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ, ΠΎΠ½ΠΈ Π·Π°Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΠΎΠΊΠΎΠ»ΠΎ ΠΊΠ»Π΅ΠΉΠΊΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΡΡΡΡ Π΄ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ ΠΎΠ±ΡΡΠ½ΠΎ. ΠΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅ ΡΠ΅Π±Π΅, ΠΊΠ°ΠΊ Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ ΡΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠΈΠ½Ρ Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»Ρ. Π§Π΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ ΡΠΈΠ»Π° ΡΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΈΠ½Π°ΠΌΠΈ ΠΈ Π°ΡΡΠ°Π»ΡΡΠΎΠΌ, ΡΠ΅ΠΌ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ Π±ΡΠ΄Π΅Ρ Π΄Π²ΠΈΠ³Π°ΡΡΡΡ Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»Ρ, Π½ΠΎ ΡΠ΅ΠΌ Π»ΡΡΡΠ΅ Π±ΡΠ΄Π΅Ρ ΡΡΠ΅ΠΏΠ»Π΅Π½ΠΈΠ΅ ΡΠΈΠ½ Ρ Π΄ΠΎΡΠΎΠ³ΠΎΠΉ, Π΄Π°ΠΆΠ΅ Ρ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠΊΠΎΠ»ΡΠ·ΠΊΠΎΠΉ. ΠΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΊΠΎΠΉ ΡΠΈΠΏ ΡΡΠ΅Π½ΠΈΡ ΡΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°ΡΡ Π²Π°ΡΠΈΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ.
β’ elasticity β ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ 0 Π΄ΠΎ 1. ΠΠ½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ»Π°ΡΡΠΈΡΠ½ΡΠΌ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ. Π§Π΅ΠΌ Π²ΡΡΠ΅ ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΠ΅ΠΌ Π±ΠΎΠ»Π΅Π΅ ΠΏΠ»Π°ΡΡΠΈΡΠ½ΡΠΌ ΠΈ Β«ΠΆΠ΅Π»Π΅ΠΎΠ±ΡΠ°Π·Π½ΡΠΌΒ» Π±ΡΠ΄Π΅Ρ ΡΡΠΎΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ Π°Π½ΠΈΠΌΠ°ΡΠΎΡΠ°. Π ΡΠΎΠΌ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΡΠ»Π°ΡΡΠΈΡΠ½ΠΎΡΡΡ, ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°ΡΡΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ 2.5.
β’ density β ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ 0 Π΄ΠΎ 1 (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 1). ΠΠ½ΠΎ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π΄Π»Ρ Π²ΠΎΠ·Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π½Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², Π½ΠΎ Ρ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡΡΡ Π°Π½ΠΈΠΌΠ°ΡΠΎΡ ΡΠ°ΡΡΡΠΈΡΡΠ²Π°Π΅Ρ ΠΌΠ°ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈ ΡΠΎ, ΠΊΠ°ΠΊ ΡΡΠ° ΠΌΠ°ΡΡΠ° ΠΎΡΡΠ°ΠΆΠ°Π΅ΡΡΡ Π½Π° Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΡΡ ΡΡΡΠ΅ΠΊΡΠ°Ρ . ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π²Ρ ΡΡΠΎΠ»ΠΊΠ½Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Ρ Π΄ΡΡΠ³ΠΈΠΌ (ΡΠΌ. ΡΠ°Π·Π΄Π΅Π» 2.3), Π½ΠΎ Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ Π±ΡΠ΄Π΅Ρ ΠΏΠ»ΠΎΡΠ½ΠΎΡΡΡ 1, Π° Ρ Π΄ΡΡΠ³ΠΎΠ³ΠΎ β 0,5, ΡΠΎ ΠΏΡΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΡ Π²ΡΡΠΎΡΠ΅ ΠΈ ΡΠΈΡΠΈΠ½Π΅ ΠΎΠ±ΠΎΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ°ΡΡΠ° ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π±ΡΠ΄Π΅Ρ Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ ΠΌΠ°ΡΡΠ° Π²ΡΠΎΡΠΎΠ³ΠΎ. ΠΠ½ΠΈΠΌΠ°ΡΠΎΡ Π²ΡΡΠΈΡΠ»ΡΠ΅Ρ ΠΌΠ°ΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΠΈΡΡ ΠΎΠ΄Ρ ΠΈΠ· ΠΈΡ ΠΏΠ»ΠΎΡΠ½ΠΎΡΡΠΈ ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² ΡΠΊΡΠ°Π½Π°. ΠΠΎΡΡΠΎΠΌΡ Π΅ΡΠ»ΠΈ Π²Ρ ΡΡΠΎΠ»ΠΊΠ½Π΅ΡΠ΅ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΠΉ Π²ΠΈΠ΄ Ρ Π²ΡΡΠΎΠΊΠΎΠΉ ΠΏΠ»ΠΎΡΠ½ΠΎΡΡΡΡ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ Π²ΠΈΠ΄ΠΎΠΌ Ρ ΠΎΡΠ΅Π½Ρ Π½ΠΈΠ·ΠΊΠΎΠΉ ΠΏΠ»ΠΎΡΠ½ΠΎΡΡΡΡ, ΡΠΎ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΠΉ Π²ΠΈΠ΄, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΈ ΠΏΠ»ΠΎΡΠ½ΠΎΡΡΠΈ ΡΡΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΠΎΡΠΏΡΠΈΠ½ΡΡ Π°Π½ΠΈΠΌΠ°ΡΠΎΡΠΎΠΌ ΠΊΠ°ΠΊ Π±ΠΎΠ»Π΅Π΅ ΠΌΠ°ΡΡΠΈΠ²Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, Π½Π΅ΠΆΠ΅Π»ΠΈ ΠΊΡΡΠΏΠ½ΡΠΉ Π²ΠΈΠ΄. Π ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π°Π½ΠΈΠΌΠ°ΡΠΎΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠΈΠ»ΡΠ½Π΅Π΅ ΠΎΡΡΠΎΠ»ΠΊΠ½ΡΡΡ ΡΠΎΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π° ΡΠΊΡΠ°Π½Π΅ ΠΊΠ°ΠΆΠ΅ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΊΡΡΠΏΠ½ΡΠΌ, ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΎΠΊ, ΡΠΎΠΎΠ±ΡΠ°Π΅ΠΌΡΠΉ ΠΊΡΡΠΏΠ½ΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ ΠΌΠ΅Π»ΠΊΠΎΠΌΡ, ΠΏΠΎΠ»ΡΡΠΈΡΡΡ Π½Π΅ ΡΡΠΎΠ»Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΌ.
ΠΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ. ΠΠ½ ΠΎΡΡΠ°ΡΡΠΈ ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅, ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π½ΠΎΠΌ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ 2.2. Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΡΠ°Π·Π΄Π΅Π»Π° ΠΌΡ ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌΡΡ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ ΠΎΠ΄ΠΈΠ½ Π²ΠΈΠ΄ Π½Π° Π΄ΡΡΠ³ΠΎΠΌ, Π½ΠΎ ΡΠΎΡ Π²ΠΈΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΡΠ½ΠΈΠ·Ρ, Π±ΡΠ΄Π΅Ρ ΠΎΡΠ΅Π½Ρ ΡΠ»Π°ΡΡΠΈΡΠ½ΡΠΌ, Π° ΡΠ»Π°ΡΡΠΈΡΠ½ΠΎΡΡΡ Π²ΠΈΠ΄Π°, ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ²Π΅ΡΡ Ρ, Π±ΡΠ΄Π΅Ρ ΡΡΠ°Π²Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅Π²ΡΡΠΎΠΊΠ°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ±Π° Π²ΠΈΠ΄Π° ΡΠΏΠ°Π΄ΡΡ Π½Π° Π΄Π½ΠΎ ΡΠΊΡΠ°Π½Π°, Π³Π΄Π΅ ΡΡΠΎΠ»ΠΊΠ½ΡΡΡΡ Ρ Π½ΠΈΠΆΠ½Π΅ΠΉ Π³ΡΠ°Π½ΠΈΡΠ΅ΠΉ, Π½ΠΈΠΆΠ½ΠΈΠΉ Π²ΠΈΠ΄ ΠΎΡΡΠΊΠΎΡΠΈΡ ΠΎΡ Π½Π΅Π΅ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΈΠ»ΡΠ½Π΅Π΅, ΡΠ΅ΠΌ Π²Π΅ΡΡ Π½ΠΈΠΉ. ΠΡΠ°ΠΊ, Π½Π°ΡΠ½Π΅ΠΌ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π°Π½ΠΈΠΌΠ°ΡΠΎΡΠ° ΠΈ Π΄ΡΡΠ³ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ² ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° Π²ΠΈΠ΄Π°:
#import Β«ViewController.hΒ»
@interface ViewController ()
@property (nonatomic, strong) UIDynamicAnimator *animator;
@end
@implementation ViewController
<# ΠΡΡΠ°Π²ΡΠ°ΡΡΡ ΡΠ°ΡΡΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π·Π΄Π΅ΡΡ #>
ΠΠ°Π»Π΅Π΅ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π²ΠΈΠ΄Ρ Ρ Π·Π°ΡΠ°Π½Π΅Π΅ Π·Π°Π΄Π°Π½Π½ΡΠΌΠΈ ΡΠ΅Π½ΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΊΠΎΠΉ ΠΈ ΡΠ²Π΅ΡΠΎΠΌ ΡΠΎΠ½Π°. ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π΄Π²ΡΡ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ ΠΎΠΆΠΈΡ Π²ΠΈΠ΄ΠΎΠ² Ρ ΡΠ°Π·Π½ΡΠΌΠΈ ΡΠ΅Π½ΡΡΠ°Π»ΡΠ½ΡΠΌΠΈ ΡΠΎΡΠΊΠ°ΠΌΠΈ ΠΈ ΠΎΠΊΡΠ°ΡΠ΅Π½Π½ΡΡ Π² ΡΠ°Π·Π½ΡΠ΅ ΡΠΎΠ½ΠΎΠ²ΡΠ΅ ΡΠ²Π΅ΡΠ°:
β (UIView *) newViewWithCenter:(CGPoint)paramCenter
backgroundColor:(UIColor *)paramBackgroundColor{
UIView *newView =
[[UIView alloc] initWithFrame:
CGRectMake(0.0f, 0.0f, 50.0f, 50.0f)];
newView.backgroundColor = paramBackgroundColor;
newView.center = paramCenter;
return newView;
}
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π²ΠΈΠ΄ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡΡ Π½Π° ΡΠΊΡΠ°Π½Π΅, ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π΄Π²Π° ΡΡΠΈΡ Π²ΠΈΠ΄Π° ΠΈ ΡΠ°ΠΊΠΆΠ΅ Π²ΡΠ²Π΅Π΄Π΅ΠΌ ΠΈΡ Π½Π° Π΄ΠΈΡΠΏΠ»Π΅ΠΉ:
UIView *topView = [self newViewWithCenter: CGPointMake(100.0f, 0.0f)
backgroundColor: [UIColor greenColor]];
UIView *bottomView = [self newViewWithCenter: CGPointMake(100.0f, 50.0f)
backgroundColor: [UIColor redColor]];
[self.view addSubview: topView];
[self.view addSubview: bottomView];
ΠΠ°Π»Π΅Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΊ Π²ΠΈΠ΄Π°ΠΌ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΡΠ³ΠΎΡΠ΅Π½ΠΈΡ β ΡΡΠΎΠΌΡ ΠΌΡ Π½Π°ΡΡΠΈΠ»ΠΈΡΡ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ 2.1:
self.animator = [[UIDynamicAnimator alloc]
initWithReferenceView: self.view];
/* Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΡΡΠ³ΠΎΡΠ΅Π½ΠΈΠ΅ */
UIGravityBehavior *gravity = [[UIGravityBehavior alloc]
initWithItems:@[topView, bottomView]];
[self.animator addBehavior: gravity];
ΠΡ Π½Π΅ Ρ ΠΎΡΠΈΠΌ, ΡΡΠΎΠ±Ρ Π²ΠΈΠ΄Ρ Π²ΡΠΏΠ°Π΄Π°Π»ΠΈ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Ρ ΡΠΊΡΠ°Π½Π°, Π΄ΠΎΡΡΠΈΠ³Π½ΡΠ² Π΅Π³ΠΎ Π΄Π½Π°. ΠΠΎΡΡΠΎΠΌΡ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π·Π½Π°Π½ΠΈΡΠΌΠΈ, ΠΏΡΠΈΠΎΠ±ΡΠ΅ΡΠ΅Π½Π½ΡΠΌΠΈ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ 2.2, ΠΈ Π·Π°Π΄Π°Π΄ΠΈΠΌ Π΄Π»Ρ Π°Π½ΠΈΠΌΠ°ΡΠΎΡΠ° Π½ΠΈΠΆΠ½ΡΡ Π³ΡΠ°Π½ΠΈΡΡ, Π° ΡΠ°ΠΊΠΆΠ΅ Π·Π°ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ΅ΠΌ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ:
/* Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΉ */
UICollisionBehavior *collision = [[UICollisionBehavior alloc]
initWithItems:@[topView, bottomView]];
collision.translatesReferenceBoundsIntoBoundary = YES;