β’ UICollisionBehavior β ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΉ;
β’ UIGravityBehavior β ΠΊΠ°ΠΊ ΠΏΠΎΠ½ΡΡΠ½ΠΎ ΠΈΠ· Π½Π°Π·Π²Π°Π½ΠΈΡ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΈΠΌΠΈΡΠ°ΡΠΈΡ ΡΡΠ³ΠΎΡΠ΅Π½ΠΈΡ;
β’ UIPushBehavior β ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠΌΠΈΡΠΈΡΠΎΠ²Π°ΡΡ Π² Π²Π°ΡΠΈΡ Π²ΠΈΠ΄Π°Ρ ΡΠΎΠ»ΡΠΊΠΈ. ΠΠΎΠΏΡΡΡΠΈΠΌ, Π²Ρ Π΄ΠΎΡΡΠΎΠ½ΡΠ»ΠΈΡΡ ΠΏΠ°Π»ΡΡΠ΅ΠΌ Π΄ΠΎ ΡΠΊΡΠ°Π½Π°, Π° ΠΏΠΎΡΠΎΠΌ ΡΡΠ°Π»ΠΈ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ Π΄Π²ΠΈΠ³Π°ΡΡ ΠΏΠ°Π»Π΅Ρ ΠΊ Π΅Π³ΠΎ Π²Π΅ΡΡ Π½Π΅ΠΌΡ ΠΊΡΠ°Ρ. ΠΡΠ»ΠΈ ΠΊ Π²ΠΈΠ΄Ρ ΠΏΡΠΈΠΊΡΠ΅ΠΏΠ»Π΅Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ°, ΠΎΡΠ½Π°ΡΠ΅Π½Π½Π°Ρ ΡΠΎΠ»ΡΠΊΠΎΠ²ΡΠΌ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ, ΡΠΎ Π²Ρ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΡΠΎΠ»ΠΊΠ°ΡΡ ΡΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ ΠΏΠ°Π»ΡΡΠ΅ΠΌ, ΠΊΠ°ΠΊ Π΅ΡΠ»ΠΈ Π±Ρ ΠΎΠ½Π° Π»Π΅ΠΆΠ°Π»Π° Π½Π° ΡΡΠΎΠ»Π΅;
β’ UISnapBehavior β ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΏΡΠΈΠΊΡΠ΅ΠΏΠ»Π΅Π½ΠΈΠ΅ Π²ΠΈΠ΄ΠΎΠ² ΠΊ ΡΠ΅ΠΌ ΠΈΠ»ΠΈ ΠΈΠ½ΡΠΌ ΠΌΠ΅ΡΡΠ°ΠΌ Π½Π° ΡΠΊΡΠ°Π½Π΅.
ΠΠ°ΠΊ Π±ΡΠ»ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΎ ΡΠ°Π½Π΅Π΅, Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π°Π½ΠΈΠΌΠ°ΡΠΎΡ ΡΠΈΠΏΠ° UIDynamicAnimator. ΠΠ½ΠΈΠΌΠ°ΡΠΎΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ Ρ ΡΡΡΠ½ΠΎΡΡΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π² Apple Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΎΠΏΠΎΡΠ½ΡΠΌ Π²ΠΈΠ΄ΠΎΠΌ. ΠΠ½ΠΈΠΌΠ°ΡΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ ΠΎΠΏΠΎΡΠ½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° Π΄Π»Ρ ΡΠ°ΡΡΠ΅ΡΠ° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΉ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ Π²ΠΈΠ΄ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° Π²ΠΈΠ΄Π° Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΠΏΠΎΡΠ½ΠΎΠ³ΠΎ Π΄Π»Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½ΠΈΠΌΠ°ΡΠΎΡΠ°. Π ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊ Π°Π½ΠΈΠΌΠ°ΡΠΎΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΈ ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΡΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π½Π΅ Π±ΡΠ΄ΡΡ Π²ΡΠΏΠ°Π΄Π°ΡΡ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Ρ ΠΎΠΏΠΎΡΠ½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΡΡ Π² ΠΎΠΏΠΎΡΠ½ΠΎΠΌ Π²ΠΈΠ΄Π΅ Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π½Π° Π½ΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΡΠ³ΠΎΡΠ΅Π½ΠΈΡ.
ΠΠΏΠΎΡΠ½ΡΠΉ Π²ΠΈΠ΄ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ°ΠΊΠΆΠ΅ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π΄Π»Ρ Π°Π½ΠΈΠΌΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π°Π½ΠΈΠΌΠ°ΡΠΎΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π°Π½ΠΈΠΌΠ°ΡΠΎΡΡ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΡΡΠΎΠ»ΠΊΠ½ΡΡΡΡ Π»ΠΈ Π΄Π²Π° ΠΊΠ²Π°Π΄ΡΠ°ΡΠ° Π΄ΡΡΠ³ Ρ Π΄ΡΡΠ³ΠΎΠΌ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ Core Graphics, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, Π±ΡΠ΄ΡΡ Π»ΠΈ Π΄Π²Π° ΡΡΠΈΡ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ° Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡΡΡ Π΄ΡΡΠ³ Π½Π° Π΄ΡΡΠ³Π° Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΈΡ Π²ΡΡΠ΅ΡΡΠΎΡΡΠ΅Π³ΠΎ Π²ΠΈΠ΄Π° β Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠΏΠΎΡΠ½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°.
Π ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅ ΠΌΡ ΠΈΡΡΠ»Π΅Π΄ΡΠ΅ΠΌ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΉ ΠΈ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ²ΠΎΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΠΌΠΈ, Π²ΠΎΠΎΡΡΠΆΠΈΠ²ΡΠΈΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡΠΌΠΈ UIKit ΠΈ Π°Π½ΠΈΠΌΠ°ΡΠΎΡΠ°ΠΌΠΈ. ΠΠ°ΡΠ½Π΅ΠΌ Ρ ΠΏΡΠΎΡΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΠΈ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ Π±ΡΠ΄Π΅ΠΌ Π²ΡΡΡΡΠ°ΠΈΠ²Π°ΡΡ Π½Π° ΠΈΡ ΠΎΡΠ½ΠΎΠ²Π΅ ΠΈΠ·ΡΡΠ°Π΅ΠΌΡΠΉ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π», Π·Π½Π°ΠΊΠΎΠΌΡΡΡ Ρ Π²ΡΠ΅ Π±ΠΎΠ»Π΅Π΅ Π·Π°Ρ Π²Π°ΡΡΠ²Π°ΡΡΠΈΠΌΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ.
2.1. ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ³ΠΎΡΠ΅Π½ΠΈΡ ΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°
ΠΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°ΡΠΈ
ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ, ΡΡΠΎΠ±Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π΄Π²ΠΈΠ³Π°Π»ΠΈΡΡ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ Π±ΡΠ΄ΡΠΎ Π½Π° Π½ΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ ΡΠΈΠ»Π° ΡΡΠΆΠ΅ΡΡΠΈ: Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΡΠ°ΡΠΈΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΊ Π²Π΅ΡΡ Π½Π΅ΠΌΡ ΠΊΡΠ°Ρ ΡΠΊΡΠ°Π½Π°, ΡΠΎ ΠΏΠΎΠ΄ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΠΌ ΡΠΈΠ»Ρ ΡΡΠΆΠ΅ΡΡΠΈ ΠΎΠ½ ΡΠΏΠ°Π΄Π΅Ρ ΠΊ Π½ΠΈΠΆΠ½Π΅ΠΌΡ ΠΊΡΠ°Ρ. ΠΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΠ² ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΡ ΠΈΠ·ΡΡΠΈΠΌ ΠΏΠΎΠ·Π΄Π½Π΅Π΅, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ ΠΏΠ°Π΄Π°ΡΡ ΡΠΎ ΡΠ²ΠΎΠ΅Π³ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΏΠΎΠΊΠ° Π½Π΅ ΡΡΠΎΠ»ΠΊΠ½ΡΡΡΡ Ρ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π²Π°ΠΌΠΈ Π»ΠΈΠ½ΠΈΠ΅ΠΉ.
Π Π΅ΡΠ΅Π½ΠΈΠ΅
ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠΉΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΈΠΏΠ° UIGravityBehavior ΠΈ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΠΊ Π½Π΅ΠΌΡ ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΡΡΡΠ²Π°ΡΡ ΡΡΠ³ΠΎΡΠ΅Π½ΠΈΠ΅ ΠΊ ΡΡΠΎΠΌΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ. Π‘Π΄Π΅Π»Π°Π² ΡΡΠΎ, ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ UIDynamicAnimator, Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΠΊ Π°Π½ΠΈΠΌΠ°ΡΠΎΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΡΠ³ΠΎΡΠ΅Π½ΠΈΡ, Π° Π²ΡΡ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ Π°Π½ΠΈΠΌΠ°ΡΠΎΡ ΡΠ΄Π΅Π»Π°Π΅Ρ Π·Π° Π²Π°Ρ.
ΠΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅
Π ΡΡΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΏΡΠΎΡΡΠΎΠΉ Π²ΠΈΠ΄, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΡΠΎΠ±ΠΎΠΉ ΡΠ°ΡΠΊΡΠ°ΡΠ΅Π½Π½ΡΠΉ ΠΊΠ²Π°Π΄ΡΠ°Ρ, Π½Π°Ρ ΠΎΠ΄ΡΡΠΈΠΉΡΡ Π² ΠΎΠ΄Π½ΠΎΠ²ΠΈΠ΄ΠΎΠ²ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. ΠΡΠΎΡ Π²ΠΈΠ΄ ΠΌΡ ΠΏΠΎΠΌΠ΅ΡΡΠΈΠΌ Π² ΡΠ΅Π½ΡΡΠ΅ ΡΠΊΡΠ°Π½Π°. ΠΠ°ΡΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΊ Π½Π΅ΠΌΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΡΠ³ΠΎΡΠ΅Π½ΠΈΡ ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΠΏΠ°Π΄Π°ΡΡ Π²Π½ΠΈΠ·, ΠΏΠΎΠΊΠ° Π½Π΅ ΡΠΊΡΠΎΠ΅ΡΡΡ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Π°ΠΌΠΈ ΡΠΊΡΠ°Π½Π°.
ΠΡΠ°ΠΊ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ Π°Π½ΠΈΠΌΠ°ΡΠΎΡ ΠΈ Π²ΠΈΠ΄:
#import Β«ViewController.hΒ»
@interface ViewController ()
@property (nonatomic, strong) UIView *squareView;
@property (nonatomic, strong) UIDynamicAnimator *animator;
@end
@implementation ViewController
<# ΠΡΡΠ°Π²ΡΠ°ΡΡΡ ΡΠ°ΡΡΡ ΠΊΠΎΠ΄Π° Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° Π²ΠΈΠ΄Π° Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π·Π΄Π΅ΡΡ #>
ΠΠ°Π»Π΅Π΅ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ Π²ΠΈΠ΄, ΠΏΡΠΈΡΠ²ΠΎΠΈΠΌ Π΅ΠΌΡ ΡΠ²Π΅Ρ ΠΈ ΠΏΠΎΠΌΠ΅ΡΡΠΈΠΌ Π² ΡΠ΅Π½ΡΡΠ΅ Π²ΠΈΠ΄Π° Π½Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°. Π’Π°ΠΊ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° UIGravityBehavior, Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π²ΡΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ-ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠΌ initWithItems:. ΠΡΠΎΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΌΠ°ΡΡΠΈΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ UIDynamicItem. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΡΠΎΠΌΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ Π²ΡΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ UIView, ΠΏΠΎΡΡΠΎΠΌΡ, ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Π²ΠΈΠ΄ Π³ΠΎΡΠΎΠ², ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ΄ΡΠΈ Π΄Π°Π»ΡΡΠ΅:
β (void)viewDidAppear:(BOOL)animated{
[super viewDidAppear: animated];
/* Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΠΉ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΠΉ Π²ΠΈΠ΄ ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π΅Π³ΠΎ ΠΊ self.view */
self.squareView = [[UIView alloc] initWithFrame:
CGRectMake(0.0f, 0.0f, 100.0f, 100.0f)];
self.squareView.backgroundColor = [UIColor greenColor];
self.squareView.center = self.view.center;
[self.view addSubview: self.squareView];
/* Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π°Π½ΠΈΠΌΠ°ΡΠΎΡ ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌ ΡΡΠ³ΠΎΡΠ΅Π½ΠΈΠ΅ */
self.animator = [[UIDynamicAnimator alloc]
initWithReferenceView: self.view];
UIGravityBehavior *gravity = [[UIGravityBehavior alloc]
initWithItems:@[self.squareView]];
[self.animator addBehavior: gravity];
}
ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ Ρ ΠΎΡΠΈΡΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΡΡΠ³ΠΎΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎ Π²ΡΠ΅ΠΌ Π²Π°ΡΠΈΠΌ Π²ΠΈΠ΄Π°ΠΌ, ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΠ΅ ΡΡΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, ΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΅Π³ΠΎ ΠΏΠΎΠ·ΠΆΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° addItem:, ΠΎΡΠ½ΠΎΡΡΡΠ΅Π³ΠΎΡΡ ΠΊ ΠΊΠ»Π°ΡΡΡ UIGravityBehavior. ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡ ΡΠ°Π½Π΅Π΅ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ.
Π’Π΅ΠΏΠ΅ΡΡ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Π²ΠΈΠ΄ Π² ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ΅ ΠΏΠΎΡΠ²ΠΈΡΡΡ Π½Π° ΡΠΊΡΠ°Π½Π΅, Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ ΡΠ²Π΅ΡΠ½ΠΎΠΉ ΠΊΠ²Π°Π΄ΡΠ°Ρ, ΠΏΠ°Π΄Π°ΡΡΠΈΠΉ ΠΈΠ· ΡΠ΅Π½ΡΡΠ° ΡΠΊΡΠ°Π½Π° Π²Π½ΠΈΠ·, Π΄ΠΎ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ ΠΊΡΠ°Ρ, Π° ΠΏΠΎΡΠΎΠΌ ΡΠΊΡΡΠ²Π°ΡΡΠΈΠΉΡΡ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Π°ΠΌΠΈ Π΄ΠΈΡΠΏΠ»Π΅Ρ. ΠΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΡΠ³ΠΎΡΠ΅Π½ΠΈΡ, ΡΠΎΡΠ½ΠΎ ΠΊΠ°ΠΊ ΡΠ΅Π°Π»ΡΠ½Π°Ρ ΡΠΈΠ»Π° ΡΡΠΆΠ΅ΡΡΠΈ, Π·Π°ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π΄Π²ΠΈΠ³Π°ΡΡΡΡ Π²Π½ΠΈΠ·, Π²ΠΏΠ»ΠΎΡΡ Π΄ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π³ΡΠ°Π½ΠΈΡΡ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Π³ΡΠ°Π½ΠΈΡΡ Π½Π΅Ρ, ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΏΠ°Π΄Π°Π΅Ρ Π²Π½ΠΈΠ· Π΄ΠΎ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎΡΡΠΈ. ΠΡ ΠΈΡΠΏΡΠ°Π²ΠΈΠΌ ΡΡΠΎΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ ΠΏΠΎΠ·ΠΆΠ΅ Π² Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²Π΅, ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π² Π΄Π»Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ.
Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅
Π Π°Π·Π΄Π΅Π» 2.0.
2.2. ΠΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΈ ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Π½ΠΈΡ
ΠΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°ΡΠΈ
Π’ΡΠ΅Π±ΡΠ΅ΡΡΡ Π·Π°Π΄Π°ΡΡ Π½Π° ΡΠΊΡΠ°Π½Π΅ Π³ΡΠ°Π½ΠΈΡΡ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΡΡΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π½Π΅ ΠΏΠ΅ΡΠ΅ΠΊΡΡΠ²Π°Π»ΠΈ Π΄ΡΡΠ³ Π΄ΡΡΠ³Π°.
Π Π΅ΡΠ΅Π½ΠΈΠ΅
ΠΠ½ΡΡΠ°Π½ΡΠΈΡΡΠΉΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΈΠΏΠ° UICollisionBehavior ΠΈ ΠΏΡΠΈΠΊΡΠ΅ΠΏΠΈΡΠ΅ Π΅Π³ΠΎ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π°Π½ΠΈΠΌΠ°ΡΠΎΡΠ°. ΠΡΠΈΡΠ²ΠΎΠΉΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Ρ translatesReferenceBoundsIntoBoundary ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΉ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ YES ΠΈ ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π°Π½ΠΈΠΌΠ°ΡΠΎΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ Ρ Π²ΡΡΠ΅ΡΡΠΎΡΡΠΈΠΌ Π²ΠΈΠ΄ΠΎΠΌ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΠΏΠΎΡΠ½ΠΎΠΉ ΡΡΡΠ½ΠΎΡΡΠΈ. Π’Π°ΠΊ Π²Ρ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅ΡΠ΅, ΡΡΠΎ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠ΅ Π²ΠΈΠ΄Ρ, Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ (ΠΎ ΡΠ΅ΠΌ ΠΌΡ Π²ΡΠΊΠΎΡΠ΅ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ), Π½Π΅ Π±ΡΠ΄ΡΡ Π²ΡΠΏΠ°Π΄Π°ΡΡ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Ρ Π²ΡΡΠ΅ΡΡΠΎΡΡΠ΅Π³ΠΎ Π²ΠΈΠ΄Π°.
ΠΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅
ΠΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ, ΠΎΡΠ½ΠΎΡΡΡΠ΅Π΅ΡΡ ΠΊ ΡΠΈΠΏΡ UICollisionBehavior, Π·Π°ΡΡΠ°Π³ΠΈΠ²Π°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ UIDynamicItem. ΠΡΠ΅ Π²ΠΈΠ΄Ρ ΡΠΈΠΏΠ° UIView ΡΠΆΠ΅ Π΅ΠΌΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π²Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π»ΠΈΡΡ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ Π²Π°ΡΠΈ Π²ΠΈΠ΄Ρ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΈΡ ΠΊ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ. ΠΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π½Π° ΡΠΊΡΠ°Π½Π΅ Π³ΡΠ°Π½ΠΈΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ Π½Π΅ΠΏΡΠ΅ΠΎΠ΄ΠΎΠ»ΠΈΠΌΡ Π΄Π»Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², Π½Π°Ρ ΠΎΠ΄ΡΡΠΈΡ ΡΡ Π² Π°Π½ΠΈΠΌΠ°ΡΠΎΡΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π²Ρ Π·Π°Π΄Π°Π΄ΠΈΡΠ΅ Π»ΠΈΠ½ΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΠΈΠ΄ΡΠΈ ΠΈΠ· Π½ΠΈΠΆΠ½Π΅Π³ΠΎ Π»Π΅Π²ΠΎΠ³ΠΎ ΡΠ³Π»Π° Π²Π°ΡΠ΅Π³ΠΎ ΠΎΠΏΠΎΡΠ½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° Π² Π½ΠΈΠΆΠ½ΠΈΠΉ ΠΏΡΠ°Π²ΡΠΉ ΡΠ³ΠΎΠ» (ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΡΡΠΎ Π±ΡΠ΄Π΅Ρ Π»ΠΈΠ½ΠΈΡ, Π²ΠΏΠ»ΠΎΡΠ½ΡΡ ΠΏΡΠΈΠ»Π΅Π³Π°ΡΡΠ°Ρ ΠΊ Π΅Π³ΠΎ Π½ΠΈΠΆΠ½Π΅ΠΌΡ ΠΊΡΠ°Ρ), Π° ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ ΠΊ ΡΡΠΎΠΌΡ Π²ΠΈΠ΄Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΡΠ³ΠΎΡΠ΅Π½ΠΈΡ, ΡΠΎ Π²ΠΈΠ΄Ρ, ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ Π½Π° ΡΠΊΡΠ°Π½Π΅, Π±ΡΠ΄ΡΡ Π΄Π²ΠΈΠ³Π°ΡΡΡΡ ΠΏΠΎΠ΄ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΠΌ ΡΡΠ³ΠΎΡΠ΅Π½ΠΈΡ Π²Π½ΠΈΠ·, Π½ΠΎ Π½Π΅ ΡΠΌΠΎΠ³ΡΡ Β«ΠΏΡΠΎΠ²Π°Π»ΠΈΡΡΡΡΒ» Ρ ΡΠΊΡΠ°Π½Π°, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠΎΠ»ΠΊΠ½ΡΡΡΡ Ρ Π΅Π³ΠΎ Π½ΠΈΠΆΠ½ΠΈΠΌ ΠΊΡΠ°Π΅ΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°Π΄Π°Π΅ΡΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ.
ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅, ΡΡΠΎΠ±Ρ Π³ΡΠ°Π½ΠΈΡΡ ΠΎΠ±Π»Π°ΡΡΠΈ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ, ΡΠΎΠ²ΠΏΠ°Π΄Π°Π»ΠΈ Ρ Π³ΡΠ°Π½ΠΈΡΠ°ΠΌΠΈ ΠΎΠΏΠΎΡΠ½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°, ΡΠΎ ΠΏΡΠΈΡΠ²ΠΎΠΉΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Ρ translatesReferenceBoundsIntoBoundary ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ YES. ΠΡΠ»ΠΈ Ρ ΠΎΡΠΈΡΠ΅ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠΈ Π»ΠΈΠ½ΠΈΠΈ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ Π³ΡΠ°Π½ΠΈΡΠ°ΠΌ ΡΠ°ΠΊΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ, ΠΏΡΠΎΡΡΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° addBoundaryWithIdentifier: fromPoint: toPoint:, ΠΎΡΠ½ΠΎΡΡΡΠΈΠΌΡΡ ΠΊ ΠΊΠ»Π°ΡΡΡ UICollisionBehavior.
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌΡΡ ΡΠΎΠ·Π΄Π°ΡΡ Π΄Π²Π° ΡΠ²Π΅ΡΠ½ΡΡ Π²ΠΈΠ΄Π°, ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ Π½Π° Π΄ΡΡΠ³ΠΎΠΌ. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΊ Π°Π½ΠΈΠΌΠ°ΡΠΎΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΡΠ³ΠΎΡΠ΅Π½ΠΈΡ, ΡΡΠΎΠ±Ρ ΡΡΠΈ Π²ΠΈΠ΄Ρ Π½Π΅ ΠΏΠ΅ΡΠ΅ΠΊΡΡΠ²Π°Π»ΠΈ Π΄ΡΡΠ³ Π΄ΡΡΠ³Π°. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΎΠ½ΠΈ Π½Π΅ Π±ΡΠ΄ΡΡ Π²ΡΡ ΠΎΠ΄ΠΈΡΡ Π·Π° Π³ΡΠ°Π½ΠΈΡΡ ΠΎΠΏΠΎΡΠ½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° (ΡΠΎ Π΅ΡΡΡ Π²ΠΈΠ΄Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°).
ΠΡΠ°ΠΊ, Π΄Π»Ρ Π½Π°ΡΠ°Π»Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΠΌΠ°ΡΡΠΈΠ² Π²ΠΈΠ΄ΠΎΠ² ΠΈ Π°Π½ΠΈΠΌΠ°ΡΠΎΡ:
#import Β«ViewController.hΒ»
@interface ViewController ()
@property (nonatomic, strong) NSMutableArray *squareViews;
@property (nonatomic, strong) UIDynamicAnimator *animator;
@end
@implementation ViewController
<# ΠΡΡΠ°ΡΠΎΠΊ Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π·Π΄Π΅ΡΡ #>
ΠΠΎΡΠΎΠΌ, ΠΊΠΎΠ³Π΄Π° Π²ΠΈΠ΄ ΠΏΠΎΡΠ²ΠΈΡΡΡ Π½Π° ΡΠΊΡΠ°Π½Π΅, Π·Π°Π΄Π°Π΄ΠΈΠΌ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΈ ΡΡΠ³ΠΎΡΠ΅Π½ΠΈΡ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΈΡ ΠΊ Π°Π½ΠΈΠΌΠ°ΡΠΎΡΡ:
β (void)viewDidAppear:(BOOL)animated{
[super viewDidAppear: animated];
/* Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π²ΠΈΠ΄Ρ */
NSUInteger const NumberOfViews = 2;
self.squareViews = [[NSMutableArray alloc] initWithCapacity: NumberOfViews];
NSArray *colors = @[[UIColor redColor], [UIColor greenColor]];
CGPoint currentCenterPoint = self.view.center;
CGSize eachViewSize = CGSizeMake(50.0f, 50.0f);