UIKit Dynamics — iOS में इंटरैक्शन की भौतिकी

लेखक: IT Sectr प्रकाशित: 2026-03-01 पढ़ने का समय: 8 मिनट

UIKit Dynamics iOS (UIKit) में भौतिक एनिमेशन फ्रेमवर्क है जो View को वास्तविक भौतिकी के नियमों के अनुसार इंटरैक्ट करने देता है: गुरुत्वाकर्षण, टकराव, लोच और आकर्षण बल। यह लेख UIDynamicAnimator के घटकों, व्यवहार (behavior) के प्रकार और व्यावहारिक उपयोग के परिदृश्यों की व्याख्या करता है।

मुख्य बिंदु

  • UIDynamicAnimator — भौतिक एनिमेशन इंजन जो व्यवहार और ऑब्जेक्ट को जोड़ता है
  • UIGravityBehavior — दिशा वेक्टर और त्वरण परिमाण के साथ गुरुत्वाकर्षण सिमुलेशन
  • UICollisionBehavior — View और reference view सीमाओं के बीच टकराव को संभालता है
  • UIDynamicItemBehavior — भौतिक गुणों का कॉन्फ़िगरेशन: लोच, घनत्व, घर्षण
  • UIAttachmentBehavior — स्प्रिंग या केबल प्रभाव के साथ दो बिंदुओं के बीच संबंध

UIKit Dynamics क्या है?

UIKit Dynamics Apple द्वारा iOS 7 (2013) में पेश किया गया भौतिक सिमुलेशन फ्रेमवर्क है। UIView.animate (रैखिक संक्रमण) और Core Animation (लेयर एनिमेशन) के विपरीत, UIKit Dynamics वास्तविक भौतिक इंटरैक्शन का अनुकरण करता है: गुरुत्वाकर्षण, टकराव, बल, लोच और घर्षण। डेवलपर UIDynamicAnimator में व्यवहार जोड़ता है और सिस्टम स्वचालित रूप से प्रत्येक फ्रेम के लिए भौतिकी की गणना करता है।

फ्रेमवर्क 60/120 FPS पर चलता है और रिजिड बॉडी सिमुलेशन पर आधारित अंतर्निहित भौतिकी इंजन का उपयोग करता है। UIKit Dynamics को भौतिकी या गणित के ज्ञान की आवश्यकता नहीं है — बस तैयार व्यवहार लागू करें और पैरामीटर कॉन्फ़िगर करें।

Apple के अनुसार, UIKit Dynamics UI प्रभावों (कार्ड स्टैक एनिमेशन, आइकन वॉबलिंग, इंटरफ़ेस भौतिकी) के लिए उपयुक्त है, लेकिन गेम के लिए अभिप्रेत नहीं है — गेम के लिए SceneKit या SpriteKit का उपयोग करें।

UIDynamicAnimator — भौतिकी इंजन

UIDynamicAnimator UIKit Dynamics का केंद्रीय वर्ग है। यह reference view (आमतौर पर कंट्रोलर का view) के साथ आरंभ होता है और सभी सक्रिय व्यवहारों का प्रबंधन करता है। प्रत्येक फ्रेम UIDynamicAnimator भौतिक नियमों के अनुसार सभी जोड़े गए तत्वों की स्थिति, वेग और त्वरण की पुनर्गणना करता है।

विधि addBehavior एक व्यवहार (या जटिल UIDynamicBehavior) जोड़ती है, removeBehavior इसे हटाती है। जब सभी ऑब्जेक्ट विश्राम की स्थिति में पहुँच जाते हैं तो एनिमेटर स्वचालित रूप से रुक जाता है (बिना टकराव और बलों के जारी रहना)। डेलिगेट विधि — UIDynamicAnimatorDelegate — सिमुलेशन के ठहराव और पुनरारंभ के बारे में सूचित करती है।

UIDynamicItem — एनिमेशन के लिए प्रोटोकॉल

भौतिकी में भाग लेने वाले किसी भी ऑब्जेक्ट को UIDynamicItem प्रोटोकॉल लागू करना चाहिए। UIView और UICollectionViewLayoutAttributes पहले से ही इसे लागू करते हैं। प्रोटोकॉल को गुणों की आवश्यकता है: bounds, center, transform। यदि ऑब्जेक्ट कस्टम है — प्रोटोकॉल को मैन्युअल रूप से लागू करें।

Dynamic Behaviors के प्रकार

UIKit Dynamics में सात अंतर्निहित प्रकार के व्यवहार शामिल हैं, प्रत्येक एक विशिष्ट भौतिक प्रभाव का मॉडल बनाता है। व्यवहारों को संयोजित किया जा सकता है: उदाहरण के लिए, गुरुत्वाकर्षण + टकराव + लोच गिरने और उछलने वाली वस्तुओं का प्रभाव पैदा करते हैं।

Behaviorभौतिक प्रभावमुख्य पैरामीटर
UIGravityBehaviorगुरुत्वाकर्षण (बल वेक्टर)gravityDirection (dx, dy), magnitude
UICollisionBehaviorऑब्जेक्ट और सीमा टकरावcollisionMode, translucence, collisionDelegate
UIAttachmentBehaviorसंबंध (स्प्रिंग/केबल)anchorPoint, length, damping, frequency
UISnapBehaviorडंपिंग के साथ बिंदु पर स्नैपsnapPoint, damping (0-1)
UIPushBehaviorधक्का/आवेग (निरंतर या तत्काल)pushDirection, magnitude, mode
UIDynamicItemBehaviorऑब्जेक्ट के भौतिक गुणelasticity, friction, density, resistance
UIFieldBehaviorबल क्षेत्र (भंवर, चुंबकीय, रेडियल)position, strength, falloff, region

व्यवहारों का संयोजन

यथार्थवादी ऑब्जेक्ट भौतिकी के लिए एक साथ कई व्यवहारों की आवश्यकता होती है। उदाहरण के लिए, गिरते कार्ड के लिए: UIGravityBehavior (गुरुत्वाकर्षण बल), UICollisionBehavior (नीचे से टकराव), UIDynamicItemBehavior (लोच: 0.4 उछाल के लिए)। सभी व्यवहार एक UIDynamicAnimator में जोड़े जाते हैं।

Swift कोड उदाहरण

UIKit Dynamics के लिए Swift कोड UIDynamicAnimator बनाता है और व्यवहार जोड़ता है। नीचे दिया गया उदाहरण कई ऑब्जेक्ट्स के साथ गुरुत्वाकर्षण, टकराव और कस्टम भौतिक गुणों को प्रदर्शित करता है।

swift
import UIKit

class PhysicsViewController: UIViewController {

    var animator: UIDynamicAnimator!

    override func viewDidLoad() {
        super.viewDidLoad()

        // 1. reference view के साथ एनिमेटर बनाएँ
        animator = UIDynamicAnimator(referenceView: view)

        // 2. गिरने वाली वस्तुएँ बनाएँ
        let redView = UIView(frame: CGRect(x: 100, y: 50, width: 60, height: 60))
        redView.backgroundColor = .systemRed
        redView.layer.cornerRadius = 8
        view.addSubview(redView)

        let blueView = UIView(frame: CGRect(x: 200, y: 30, width: 60, height: 60))
        blueView.backgroundColor = .systemBlue
        blueView.layer.cornerRadius = 8
        view.addSubview(blueView)

        // 3. गुरुत्वाकर्षण
        let gravity = UIGravityBehavior(items: [redView, blueView])
        gravity.gravityDirection = CGVector(dx: 0, dy: 1)
        gravity.magnitude = 0.8
        animator.addBehavior(gravity)

        // 4. टकराव
        let collision = UICollisionBehavior(items: [redView, blueView])
        collision.translatesReferenceBoundsIntoBoundary = true
        collision.collisionDelegate = self
        animator.addBehavior(collision)

        // 5. भौतिक गुण
        let itemBehavior = UIDynamicItemBehavior(items: [redView, blueView])
        itemBehavior.elasticity = 0.6
        itemBehavior.friction = 0.3
        itemBehavior.density = 1.0
        animator.addBehavior(itemBehavior)

        // 6. टैप पर Snap व्यवहार
        let tap = UITapGestureRecognizer(target: self, action: #selector(handleTap))
        view.addGestureRecognizer(tap)
    }

    @objc
    func handleTap(_ gesture: UITapGestureRecognizer) {
        let point = gesture.location(in: view)

        // प्रत्येक ऑब्जेक्ट के लिए Snap व्यवहार
        for subview in view.subviews where subview is UIView {
            animator.removeAllBehaviors()
            let snap = UISnapBehavior(item: subview, snapTo: point)
            snap.damping = 0.5
            animator.addBehavior(snap)
        }
    }
}

extension PhysicsViewController: UICollisionBehaviorDelegate {
    func collisionBehavior(_ behavior: UICollisionBehavior,
                             beganContactFor item1: UIDynamicItem,
                             with item2: UIDynamicItem,
                             at point: CGPoint) {
        print("टकराव पर: (बिंदु)")
    }
}

उदाहरण गुरुत्वाकर्षण, टकराव और भौतिक गुणों के साथ दो View बनाता है। टैप पर UISnapBehavior 0.5 डंपिंग के साथ ऑब्जेक्ट को स्पर्श बिंदु पर खींचता है। UICollisionBehaviorDelegate ध्वनि और दृश्य प्रभावों के लिए टकराव की शुरुआत को ट्रैक करता है।

व्यावहारिक उपयोग के परिदृश्य

UIKit Dynamics का उपयोग iOS ऐप्स में गैर-गेम इंटरफ़ेस भौतिकी के लिए किया जाता है। लोकप्रिय परिदृश्य: कार्ड स्टैक एनिमेशन (केंद्र में खींचने के लिए UISnapBehavior), त्रुटि पर स्क्रीन शेक (UIDynamicItemBehavior + UIPushBehavior), ऑनबोर्डिंग में "गिरते तारे" प्रभाव (gravity + collision + field behavior)।

प्रदर्शन के लिए, UIKit Dynamics भौतिकी के साथ 15-20 से अधिक एक साथ ऑब्जेक्ट न रखने की सलाह देता है। प्रत्येक ऑब्जेक्ट को प्रत्येक फ्रेम पर टकराव और बल गणना की आवश्यकता होती है। सीमा से अधिक होने पर, UIView के बजाय CALayer का उपयोग करें — Core Animation लेयर को अधिक कुशलता से संभालता है।

अक्सर पूछे जाने वाले प्रश्न

UIKit Dynamics Core Animation से कैसे अलग है?

UIKit Dynamics रिजिड बॉडी सिमुलेशन पर आधारित भौतिक इंटरैक्शन (गुरुत्वाकर्षण, टकराव, बल) का मॉडल बनाता है। Core Animation निर्दिष्ट समय वक्र के साथ CALayer गुणों (position, opacity, transform) को एनिमेट करता है। Dynamics इंटरैक्टिव भौतिकी के लिए उपयुक्त है, Core Animation पूर्वनिर्धारित संक्रमणों के लिए।

क्या SwiftUI में UIKit Dynamics का उपयोग किया जा सकता है?

SwiftUI में UIKit Dynamics का सीधा समर्थन नहीं है। भौतिक प्रभावों के लिए, UIViewRepresentable के अंदर UIKitView + UIDynamicAnimator का उपयोग करें, या SwiftUI में Animation.spring() और withAnimation() के माध्यम से कस्टम एनिमेशन का उपयोग करें।

UIKit Dynamics को कैसे रोकें?

animator.removeAllBehaviors() कॉल करें — यह सभी सक्रिय भौतिक व्यवहारों को हटा देता है। जब सभी ऑब्जेक्ट विश्राम में पहुँच जाते हैं तो एनिमेटर स्वचालित रूप से रुक जाता है। अस्थायी ठहराव के लिए, animator.isPaused प्रॉपर्टी का उपयोग करें या अलग-अलग व्यवहार हटाएँ।

एक साथ कितने ऑब्जेक्ट को एनिमेट किया जा सकता है?

Apple पूर्ण भौतिकी (गुरुत्वाकर्षण + टकराव + बल) के साथ 15-20 ऑब्जेक्ट से अधिक न करने की सलाह देता है। सामूहिक एनिमेशन के लिए, UIFieldBehavior का उपयोग करें — यह जोड़ीदार टकराव के बिना केंद्रीय रूप से बलों की गणना करता है, जिससे CPU लोड कम होता है।

सारांश

  • UIKit Dynamics — गुरुत्वाकर्षण, टकराव और बल सिमुलेशन के साथ iOS भौतिक एनिमेशन फ्रेमवर्क
  • UIDynamicAnimator — इंजन जो व्यवहारों का प्रबंधन करता है और प्रत्येक फ्रेम में भौतिकी की गणना करता है
  • 7 व्यवहार प्रकार — UIGravityBehavior, UICollisionBehavior, UIAttachmentBehavior, UISnapBehavior, UIPushBehavior, UIDynamicItemBehavior, UIFieldBehavior
  • संयोजन — gravity + collision + itemBehavior उछाल के साथ यथार्थवादी गिरने की भौतिकी बनाता है
  • UIDynamicItem — भौतिकी भागीदार ऑब्जेक्ट के लिए प्रोटोकॉल (UIView डिफ़ॉल्ट रूप से लागू करता है)
  • सीमा — पूर्ण भौतिकी के साथ 20 से अधिक ऑब्जेक्ट नहीं, गेम और जटिल दृश्यों के लिए उपयुक्त नहीं
  • SwiftUI — UIKit Dynamics को एकीकृत करने के लिए UIViewRepresentable का उपयोग करें

हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे

IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।

परियोजना पर चर्चा करें

यह भी पढ़ें