UIView.animate: এটি কী, iOS-এ UIView বৈশিষ্ট্যের অ্যানিমেশন

লেখক: IT Sectr প্রকাশিত: 2026-03-01 পড়ার সময়: 8 মিনিট

UIView.animate iOS-এ UIView বৈশিষ্ট্য অ্যানিমেট করার প্রধান পদ্ধতি, যা UIKit-এ duration, delay এবং options সহ ব্লকের মাধ্যমে বাস্তবায়িত। পদ্ধতিটি frame, alpha, transform, backgroundColor এবং অন্যান্য অ্যানিমেটেবল বৈশিষ্ট্য অ্যানিমেট করে। এই নিবন্ধটি সিনট্যাক্স, প্যারামিটার, ব্যবহারিক উদাহরণ এবং UIKit অ্যানিমেশনের অভ্যন্তরীণ কাঠামো বর্ণনা করে।

মূল পয়েন্ট

  • UIView.animate — UIView বৈশিষ্ট্য অ্যানিমেট করার ব্লক-ভিত্তিক পদ্ধতি: frame, alpha, transform, backgroundColor
  • প্যারামিটার — duration (সেকেন্ড), delay (সেকেন্ড), options (বক্ররেখা, পুনরাবৃত্তি, স্বয়ংক্রিয় বিপরীত), completion (ক্লোজার)
  • স্প্রিং অ্যানিমেশন — UIView.animate(withDuration:delay:usingSpringWithDamping:) ভৌত প্রতিক্ষেপণ সহ
  • কীফ্রেম অ্যানিমেশন — UIView.animateKeyframes আপেক্ষিক সময় সহ বহু-পদক্ষেপ ক্রমের জন্য
  • Core Animation — অভ্যন্তরে, UIView.animate CALayer স্তরে CABasicAnimation ব্যবহার করে

UIView.animate কী?

UIView.animate UIView ক্লাসের একটি স্ট্যাটিক পদ্ধতি, যা iOS 4 (2010)-এ চালু হয়েছে। এটি UIView-এর অ্যানিমেটেবল বৈশিষ্ট্য: frame, bounds, center, alpha, transform, backgroundColor অ্যানিমেট করার জন্য একটি ডিক্লারেটিভ API প্রদান করে। পদ্ধতিটি বৈশিষ্ট্য পরিবর্তন সহ একটি ব্লক (ক্লোজার) গ্রহণ করে — সিস্টেম প্রতিটি পরিবর্তিত বৈশিষ্ট্যের জন্য স্বয়ংক্রিয়ভাবে CABasicAnimation তৈরি করে।

ব্লক সিনট্যাক্স পুরানো beginAnimations/commitAnimations (iOS 2-3) প্রতিস্থাপন করেছে এবং UIKit-এ অ্যানিমেশন মানদণ্ডে পরিণত হয়েছে। UIView.animate অ্যানিমেশন মূল থ্রেডে চলে এবং UI ব্লক করে না। ডিফল্টভাবে, অ্যানিমেশনের সময়কাল easeInOut বক্ররেখা সহ 0.25 সেকেন্ড।

Apple WWDC 2023 অনুসারে, নতুন প্রকল্পে প্রস্তাবিত অ্যানিমেশন পদ্ধতি হল SwiftUI .animation() এবং .transition() মডিফায়ার সহ, কিন্তু UIView.animate iOS 16 এবং নিচের সমর্থনের পাশাপাশি জটিল কাস্টম ট্রানজিশনের জন্য প্রধান হাতিয়ার হিসেবে রয়ে গেছে।

অ্যানিমেশন প্যারামিটার ও অপশন

UIView.animate তিনটি মূল প্যারামিটার প্রদান করে: duration (সেকেন্ডে সময়কাল), delay (শুরুর আগে বিলম্ব), এবং options (UIView.AnimationOptions বিট মাস্কের সেট)। Options-এর মধ্যে অন্তর্ভুক্ত curve (easeInOut, easeIn, easeOut, linear), repeat, autoreverse, allowUserInteraction, beginFromCurrentState এবং overrideInheritedDuration।

প্যারামিটারপ্রকারবিবরণ
durationTimeIntervalসেকেন্ডে অ্যানিমেশনের সময়কাল (Double প্রকার)
delayTimeIntervalঅ্যানিমেশন শুরুর আগে বিলম্ব
optionsUIView.AnimationOptionsবিট মাস্ক: curve, repeat, autoreverse, layoutSubviews
animations() -> Voidঅ্যানিমেটেবল বৈশিষ্ট্যের পরিবর্তন সহ ব্লক
completion(Bool) -> Voidঅ্যানিমেশন শেষ হওয়ার পর ক্লোজার

options প্যারামিটার একটি অ্যারের মাধ্যমে সংযুক্ত হয়: [.curveEaseOut, .repeat, .autoreverse]। repeat এবং autoreverse সহ অ্যানিমেশন View-কে তার প্রাথমিক অবস্থায় মসৃণভাবে ফিরিয়ে আনে এবং অনির্দিষ্টকাল ধরে পুনরাবৃত্তি করে। সীমিত সংখ্যক পুনরাবৃত্তির জন্য, animateKeyframes ব্যবহার করুন।

UIView.animate-এর মাধ্যমে স্প্রিং অ্যানিমেশন

স্প্রিং অ্যানিমেশন একটি ভৌত স্প্রিং প্রভাব যোগ করে: বস্তুটি কেবল বিন্দু A থেকে B-তে যায় না, বরং সঙ্কুচিত দোলনের সাথে লক্ষ্য অতিক্রম করে। প্যারামিটার: usingSpringWithDamping (সঙ্কোচন 0-1, যেখানে 0 সর্বোচ্চ দোলন) এবং initialSpringVelocity (প্রারম্ভিক স্প্রিং বেগ)।

Apple প্রাকৃতিক UI অ্যানিমেশনের জন্য 0.4-0.8 পরিসরে usingSpringWithDamping ব্যবহারের সুপারিশ করে। মান 0.5 "রাবারের মতো" অনুভূতি ছাড়াই লক্ষণীয় প্রতিক্ষেপণ তৈরি করে। initialSpringVelocity = 1.0 1 pt/সেকেন্ডের গতির সাথে মিলে। 0-এ, অ্যানিমেশন স্থির অবস্থা থেকে শুরু হয়।

swift
// স্প্রিং অ্যানিমেশন ও কীফ্রেম উদাহরণ
import UIKit

class AnimatedView: UIView {

    func springBounce() {
        // সঙ্কোচন সহ স্প্রিং অ্যানিমেশন
        UIView.animate(
            withDuration: 0.8,
            delay: 0,
            usingSpringWithDamping: 0.5,
            initialSpringVelocity: 1.0,
            options: [.allowUserInteraction],
            animations: {
                self.transform = CGAffineTransform(scaleX: 1.2, y: 1.2)
                self.alpha = 0.7
            },
            completion: { _ in
                UIView.animate(withDuration: 0.3) {
                    self.transform = .identity
                    self.alpha = 1.0
                }
            }
        )
    }

    func slideIn(from offset: CGFloat) {
        self.transform = CGAffineTransform(translationX: offset, y: 0)
        self.alpha = 0.0

        UIView.animate(
            withDuration: 0.6,
            delay: 0.1,
            options: [.curveEaseOut]
        ) {
            self.transform = .identity
            self.alpha = 1.0
        }
    }
}

কীফ্রেম অ্যানিমেশন

UIView.animateKeyframes আপনাকে একটি অ্যানিমেশনকে একাধিক ধাপে (কীফ্রেম) ভাগ করতে দেয়, প্রতিটির নিজস্ব আপেক্ষিক সময় ও সময়কাল থাকে। addKeyframe(withRelativeStartTime:relativeDuration:) পদ্ধতি মোট অ্যানিমেশন সময়কালের সাপেক্ষে 0 থেকে 1 পর্যন্ত সময় মান গ্রহণ করে।

কীফ্রেম অ্যানিমেশন বহু-পদক্ষেপ প্রভাবের জন্য উপযোগী: বাটন স্পন্দন (বৃদ্ধি → বিরাম → ফেরত), অনুক্রমিক উপাদান আবির্ভাব, মধ্যবর্তী অবস্থাসহ জটিল বিকৃতি। প্রতিটি কীফ্রেমের options-এর মাধ্যমে নিজস্ব অ্যানিমেশন বক্ররেখা থাকতে পারে।

swift
// জটিল ক্রম সহ কীফ্রেম অ্যানিমেশন
func complexPulse() {
    UIView.animateKeyframes(withDuration: 2.0, delay: 0, options: [.repeat]) {
        UIView.addKeyframe(withRelativeStartTime: 0.0, relativeDuration: 0.25) {
            self.transform = CGAffineTransform(scaleX: 1.5, y: 1.5)
            self.alpha = 0.5
        }
        UIView.addKeyframe(withRelativeStartTime: 0.25, relativeDuration: 0.25) {
            self.transform = CGAffineTransform(scaleX: 0.8, y: 0.8)
            self.alpha = 0.8
        }
        UIView.addKeyframe(withRelativeStartTime: 0.5, relativeDuration: 0.5) {
            self.transform = .identity
            self.alpha = 1.0
        }
    }
}

// নেস্টেড ক্লোজার সহ অ্যানিমেশন
func animateCardTransition() {
    UIView.animate(withDuration: 0.4, delay: 0, options: [.curveEaseOut]) {
        self.transform = CGAffineTransform(scaleX: 0.95, y: 0.95)
    } completion: { _ in
        UIView.animate(withDuration: 0.3, delay: 0, options: [.curveEaseIn]) {
            self.transform = .identity
        }
    }
}

অভ্যন্তরীণ কাঠামো: Core Animation ভিতরে

ভিতরে, UIView.animate Core Animation (CAAnimation)-এর মাধ্যমে প্রতিটি UIView-এর CALayer-এ অ্যানিমেশন অর্পণ করে। যখন আপনি অ্যানিমেশন ব্লকের ভিতরে frame পরিবর্তন করেন, সিস্টেম সংশ্লিষ্ট লেয়ারের position এবং bounds বৈশিষ্ট্যের জন্য CABasicAnimation তৈরি করে। যদি alpha পরিবর্তন করা হয় — লেয়ারের opacity বৈশিষ্ট্যের জন্য CABasicAnimation।

Core Animation একটি পৃথক রেন্ডার সার্ভার প্রক্রিয়া (iOS-এ backboardd) ব্যবহার করে যা 120 Hz (ProMotion)-এ অ্যানিমেশন প্রক্রিয়া করে। UIView.animate মূল থ্রেড ব্লক করে না — বৈশিষ্ট্য পরিবর্তন রেন্ডার সার্ভারে পাঠানো হয়, যা অ্যাপ্লিকেশনের অংশগ্রহণ ছাড়াই ফ্রেম ইন্টারপোলেট করে।

Apple-এর মতে, UIView.animate-এর মাধ্যমে অ্যানিমেশনগুলিতে 60 FPS-এ প্রতি পরিবর্তিত লেয়ারে ~2-3% CPU ওভারহেড থাকে। বৃহৎ পরিসরের অ্যানিমেশনের (একসঙ্গে 20+ বস্তু) জন্য, CATransaction এবং ম্যানুয়াল লেয়ার ব্যবস্থাপনা ব্যবহারের সুপারিশ করা হয়।

UIKit অ্যানিমেশন ডিবাগ ও ভিজুয়ালাইজ করার জন্য, Xcode Debug View Hierarchy ব্যবহার করুন — এটি প্রতিটি লেয়ারে সক্রিয় CAAnimations, তাদের সময়কাল, বক্ররেখা ও বর্তমান অবস্থা দেখায়। Core Animation-এর অভ্যন্তরীণ কাঠামো বোঝা জটিল অ্যানিমেশনের সাথে কর্মক্ষমতা সমস্যা এড়াতে এবং UIView.animate ও CABasicAnimation-এর প্রত্যক্ষ ব্যবহারের মধ্যে সর্বোত্তম পদ্ধতি বেছে নিতে সাহায্য করে।

UIKit অ্যানিমেশন ডিবাগ ও ভিজুয়ালাইজ করার জন্য, Xcode Debug View Hierarchy ব্যবহার করুন — এটি প্রতিটি লেয়ারে সক্রিয় CAAnimations, তাদের সময়কাল, বক্ররেখা ও বর্তমান অবস্থা দেখায়। Core Animation-এর অভ্যন্তরীণ কাঠামো বোঝা জটিল অ্যানিমেশনের সাথে কর্মক্ষমতা সমস্যা এড়াতে এবং UIView.animate ও CABasicAnimation-এর প্রত্যক্ষ ব্যবহারের মধ্যে সর্বোত্তম পদ্ধতি বেছে নিতে সাহায্য করে।

সচরাচর জিজ্ঞাসিত প্রশ্ন

UIView-এর কোন বৈশিষ্ট্যগুলো অ্যানিমেট করা যায়?

অ্যানিমেটেবল বৈশিষ্ট্য UIView-এর: frame, bounds, center, alpha, transform (CGAffineTransform), backgroundColor। Auto Layout সীমাবদ্ধতা পরিবর্তনের সময় layoutIfNeeded()-এর পরিবর্তনও অ্যানিমেট হয়। অন্যান্য বৈশিষ্ট্য UIView.animate-এর মাধ্যমে অ্যানিমেট করা যায় না — সেগুলোর জন্য CALayer বা CADisplayLink ব্যবহার করুন।

UIView.animate ও UIView.animateKeyframes-এর পার্থক্য কী?

UIView.animate বর্তমান অবস্থা থেকে লক্ষ্য অবস্থায় একটি অ্যানিমেশন সম্পাদন করে। UIView.animateKeyframes মোট সময়কালকে ভিন্ন ভিন্ন আপেক্ষিক শুরু সময় ও সময়কাল সহ একাধিক ধাপে (কীফ্রেম) ভাগ করে। কীফ্রেম বহু-পদক্ষেপ ক্রমের জন্য উপযুক্ত।

কেন UIView.animate UI ব্লক করে না?

UIView.animate অ্যানিমেশন রেন্ডার সার্ভারে (backboardd) প্রক্রিয়া করা হয় — একটি পৃথক iOS প্রক্রিয়া। মূল থ্রেড কেবল প্রাথমিক ও চূড়ান্ত বৈশিষ্ট্য মান পাঠায়। ফ্রেম ইন্টারপোলেশন Core Animation-এর মাধ্যমে GPU-তে 120 FPS পর্যন্ত হারে সম্পাদিত হয়।

কীভাবে UIView.animate শেষ হওয়ার আগে বন্ধ করবেন?

UIView-এ layer.removeAllAnimations() কল করুন — এটি অভ্যন্তরে তৈরি সমস্ত CAAnimation সরিয়ে ফেলে। আরও সঠিক নিয়ন্ত্রণের জন্য, CATransaction এবং CAAnimation.keyPath-এর মাধ্যমে অ্যানিমেশন শনাক্তকারী ব্যবহার করুন।

সারসংক্ষেপ

  • UIView.animate — duration, delay, options ও completion সহ UIView বৈশিষ্ট্য অ্যানিমেট করার ব্লক-ভিত্তিক পদ্ধতি
  • স্প্রিং অ্যানিমেশন — ভৌত প্রতিক্ষেপণের জন্য usingSpringWithDamping + initialSpringVelocity
  • কীফ্রেম অ্যানিমেশন — বহু-পদক্ষেপ ক্রমের জন্য UIView.animateKeyframes addKeyframe সহ
  • অ্যানিমেটেবল বৈশিষ্ট্য — frame, bounds, center, alpha, transform, backgroundColor
  • Core Animation — অভ্যন্তরে, UIView.animate CALayer-এর জন্য CABasicAnimation তৈরি করে
  • রেন্ডার সার্ভার — অ্যানিমেশন মূল থ্রেড ব্লক না করে 120 Hz-এ প্রক্রিয়া হয়
  • SwiftUI — নতুন প্রকল্পের জন্য প্রস্তাবিত হাতিয়ার, iOS 16- সমর্থনের জন্য UIView.animate

আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব

IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।

প্রকল্প নিয়ে আলোচনা করুন

আরও পড়ুন