কীভাবে একটি ইউআইভিআইসুয়ালএফেক্টভিউ এবং / অথবা ইউআইবিউলআরএফেক্টকে ইন-আউট করবেন?


93

আমি UIBlurEffect ইন এবং আউট দিয়ে একটি ইউআইআইভিউজুয়ালএফেক্টভিউটি বিবর্ণ করতে চাই:

var blurEffectView = UIVisualEffectView()
blurEffectView = UIVisualEffectView(effect: UIBlurEffect(style: .dark))

আমি কোনও ফাংশনটির মধ্যে UIButtonম্লান হয়ে যাওয়ার জন্য একটি ফাংশনটির মধ্যে একটি সাধারণ অ্যানিমেশন ব্যবহার করি , এটি বিবর্ণ হওয়ার জন্য একই তবে .alpha = 0& hidden = true:

blurEffectView.hidden = false
UIView.animate(withDuration: 1, delay: 0, options: .curveEaseOut) {
    self.blurEffectView.alpha = 1
}

এখন, উভয় দিকের বিবর্ণ হয়ে যাওয়া কাজ করে তবে বিবর্ণ হওয়ার সময় এটি আমাকে একটি ত্রুটি দেয় :

<UIVisualEffectView 0x7fdf5bcb6e80>এর অস্বচ্ছতা হ্রাস করতে বলা হচ্ছে। অস্বচ্ছতা 1 এ ফিরে না আসা পর্যন্ত এটি প্রভাবটি ভাঙ্গা দেখা দেবে।

প্রশ্ন

আমি কীভাবে সফলভাবে UIVisualEffectViewএটি ভেঙে না গিয়ে এবং বিবর্ণ ট্রানজিশন ছাড়াই অভ্যর্থনা ফিরিয়ে আনব?

বিঃদ্রঃ

  • আমি লাগাতে চেষ্টা UIVisualEffectViewএকটি মধ্যে UIViewএবং যে এক বিবর্ণ, কোন সাফল্য

আপনি এর মাধ্যমে ত্রুটিটি এড়াতে পারেন: 1. ব্লারএফেক্টটিকে প্রাথমিক শৈলী নির্ধারণ না করা। উদাহরণস্বরূপ, var blurEffectView = UIVisualEffectView () এবং তারপরে ২. ব্লারএফেক্টটিকে ব্লারএফেক্টভিউতে অ্যানিমেশন ব্লকটি অন্তর্ভুক্ত করুন। ৩. "ব্লারএফেক্টভিউতে ব্লারএফেক্টের অ্যাসাইনমেন্ট" অ্যানিমেট করা ব্লারএফেক্টভিউ.এলফায় সামঞ্জস্যের জায়গায় করা হয়। ** ত্রুটিটি প্রদর্শিত হবে এমনকি আপনি যদি কোনও প্রাথমিক মান নির্ধারণ করেন তবে এটি শিল করুন, তারপরে এটি আবার যুক্ত করুন। সুতরাং ত্রুটি প্রতিরোধের মূলটি হ'ল অ্যানিমেশন ব্লক না হওয়া পর্যন্ত প্রভাবটি blurEffectView এ বরাদ্দ করা না।
উদ্দেশ্যটিসি

এছাড়াও উল্লেখ করা দরকার, ব্লারএফেক্টভিউতে ত্রুটি এড়াতে আলফা = 1.0 থাকতে হবে। যে কোনও উপায়ে আলফার সাথে চলাচল করলে ত্রুটি তৈরি হবে। উদাহরণস্বরূপ, অ্যানিমেশন ব্লকের আগে আপনি blurEffectView.alpha = 0.7 সেট করেন, তারপরে অ্যানিমেশনব্লকটিতে আপনি blurEffectView.effect = blurEffect বরাদ্দ করেন, ত্রুটি তৈরি হয়।
উদ্দেশ্য

উত্তর:


188

আমি মনে করি এটি iOS9 এ নতুন, তবে আপনি এখন UIVisualEffectViewএকটি অ্যানিমেশন ব্লকের অভ্যন্তরে কোনও প্রভাব নির্ধারণ করতে পারেন :

let overlay = UIVisualEffectView()
// Put it somewhere, give it a frame...
UIView.animate(withDuration: 0.5) {
    overlay.effect = UIBlurEffect(style: .light)
}

nilঅপসারণ করতে এটি সেট করুন ।

খুব গুরুত্বপূর্ণ - সিমুলেটারে এটি পরীক্ষা করার সময়, আপনার সিমুলেটারের গ্রাফিক্স মানের ওভাররাইডটিকে কাজ করার জন্য উচ্চ মানেরতে সেট করতে ভুলবেন না।


4
পুরোপুরি কাজ করে। ধন্যবাদ
বাজা207

দুর্দান্ত! যেমনটি আপনি বলেছেন, আইওএস 8 এর জন্য কাজ করে না যদিও: /
লিনাসগেফার্থ

ঠিক ঠিক কারণ আমি উপরে কি লিখেছি। আমি এখন যাইহোক এটি অনুমোদিত। @jpros
লিনাসগেফার্থ

10
চমত্কার "অস্পষ্টতা" পেতে আপনি
নিলটিতে

4
@jpros আপনি কী "ব্লার আউট" বলতে চান তা বোঝাতে কি আপত্তি করবেন?
এনডিমেয়ারি

19

অ্যাপল ডকুমেন্টেশন (বর্তমানে) যুক্তরাষ্ট্রের ...

ইউআইভিআইজুয়ালএফেক্টভিউ ক্লাসটি ব্যবহার করার সময়, 1 এর চেয়ে কম আলফা মানগুলি এড়িয়ে চলুন।

এবং

ভিজ্যুয়াল এফেক্ট ভিউ বা এর যে কোনও সুপারভিউতে আলফাকে 1 এরও কম সেট করে রাখার ফলে অনেকগুলি প্রভাব ভুল দেখা যায় বা একেবারে দেখা যায় না।

আমি বিশ্বাস করি এখানে কিছু গুরুত্বপূর্ণ প্রসঙ্গ অনুপস্থিত ...

আমি পরামর্শ দিচ্ছি যে অবিচ্ছিন্ন দৃশ্যের জন্য 1 এর চেয়ে কম আলফা মানগুলি এড়ানো উদ্দেশ্য নয়। আমার নম্র মতে এটি কোনও দৃশ্যের অ্যানিমেশনের ক্ষেত্রে প্রযোজ্য নয়।

আমার বক্তব্য - আমি প্রস্তাব দেব যে অ্যালিমার মান 1 এর চেয়ে কম অ্যানিমেশনের জন্য গ্রহণযোগ্য।

টার্মিনাল বার্তায় বলা হয়েছে:

ইউআইভিআইসুয়ালএফেক্টভিউকে এর অস্বচ্ছতা অ্যানিমেট করতে বলা হচ্ছে। অস্বচ্ছতা 1 এ ফিরে না আসা পর্যন্ত এটি প্রভাবটি ভাঙ্গা দেখা দেবে।

এটি মনোযোগ দিয়ে পড়া, প্রভাব হবে প্রদর্শিত ভাঙা। এই সত্তা সম্পর্কে আমার বক্তব্য:

  • আপাত বিরতি কেবল সত্যই দৃ a় দৃষ্টিভঙ্গির জন্য গুরুত্বপূর্ণ - পরিবর্তিত নয়;
  • UIVisualEffect1 এর চেয়ে কম আলফা মান সহ একটি স্থির / অপরিবর্তনীয় দৃশ্য অ্যাপল দ্বারা নকশাকৃত / নকশাকৃত হিসাবে উপস্থাপন করবে না; এবং
  • টার্মিনালের বার্তাটি একটি ত্রুটি নয়, কেবল একটি সতর্কতা।

উপরে @ জার্টারটনের উত্তরটি বাড়িয়ে দিতে যা আমার সমস্যা সমাধানে আমাকে সহায়তা করেছে, আমি যুক্ত করব ...

UIVisualEffectনিম্নলিখিতটি (উদ্দেশ্য-সি) কোডটি ম্লান করার জন্য :

UIView.animateWithDuration(1.0, animations: {
//  EITHER...
    self.blurEffectView.effect = UIBlurEffect(nil)
//  OR...
    self.blurEffectView.alpha = 0
}, completion: { (finished: Bool) -> Void in
    self.blurEffectView.removeFromSuperview()
} )

আমি উভয় পদ্ধতি সফলভাবে ব্যবহার করেছি: effectসম্পত্তি nilসেট করা এবং এতে alphaসম্পত্তি সেট করা 0

লক্ষ্য করুন সেটিং effectকরার nilসময় সেটিং অ্যানিমেশন শেষে (ক ভাল বর্ণনার চান জন্য) একটি "চমৎকার ফ্ল্যাশ" তৈরি করে, alphaকরতে 0একটি মসৃণ পরিবর্তন সৃষ্টি করে।

(আমাকে যেকোন সিনট্যাক্স ত্রুটি জানতে দিন ... আমি আপত্তি-সিতে লিখি))


আপনার অবদানের জন্য ধন্যবাদ। আমি আপনার বক্তব্য পেতে; ত্রুটিটি আমার জন্য ইতিমধ্যে
ডাব্লু

15

এখানে আমি যে সমাধানটি শেষ করেছিলাম যা আইওএস 10 এবং পূর্ববর্তী উভয় সংস্করণে সুইফট 3 ব্যবহার করে কাজ করে

extension UIVisualEffectView {

    func fadeInEffect(_ style:UIBlurEffectStyle = .light, withDuration duration: TimeInterval = 1.0) {
        if #available(iOS 10.0, *) {
            let animator = UIViewPropertyAnimator(duration: duration, curve: .easeIn) {
                self.effect = UIBlurEffect(style: style)
            }

            animator.startAnimation()
        }else {
            // Fallback on earlier versions
            UIView.animate(withDuration: duration) {
                self.effect = UIBlurEffect(style: style)
            }
        }
    }

    func fadeOutEffect(withDuration duration: TimeInterval = 1.0) {
        if #available(iOS 10.0, *) {
            let animator = UIViewPropertyAnimator(duration: duration, curve: .linear) {
                self.effect = nil
            }

            animator.startAnimation()
            animator.fractionComplete = 1
        }else {
            // Fallback on earlier versions
            UIView.animate(withDuration: duration) {
                self.effect = nil
            }
        }
    }

}

উদাহরণ ব্যবহারের জন্য আপনি এই सारটিটিও পরীক্ষা করতে পারেন ।


ব্যবহার UIViewPropertyAnimatorশুধু আইওএস কাজ বলে মনে হয় 11. এই জন্য ধন্যবাদ হয়!
লিনাসগফার্থ

যুক্ত করতে ভুলবেন না: ইউআইকিট আমদানি করুন
ওলেকসান্ডার

8

কেবলমাত্র কাজ - এই ধারকটির UIVisualEffectViewজন্য একটি ধারক ভিউ এবং alphaসম্পত্তি পরিবর্তন করুন । এই পদ্ধতিটি আইওএস 9 এ আমার জন্য নিখুঁতভাবে কাজ করে মনে হচ্ছে এটি আর iOS 10 এ কাজ করে না।


শীতল। ধন্যবাদ, চেষ্টা করে দেখুন :)
লিনাসগেফার্থ

4
আপনি কি নমুনা কোড সরবরাহ করতে পারেন? এটি কাজ করে না বলে মনে হচ্ছে।
cnotethegr8

আইওএস 9
এচআরপি

@ ডেরিকহান্ট এখানে একই। আপনি কি সমাধান খুঁজে পেয়েছেন?
ডামিস্টারুহেক

4
@ ডামির্স্টুহেেক যদি আপনার প্রকল্পটি কেবল আইওএস 10 হয় তবে আপনি ইউআইবিউলউরউভিউ শক্তিটি অ্যানিমেট করার জন্য নতুন ইউআইভিউপ্রোপার্টি অ্যানিম্যাটর ক্লাসটি ব্যবহার করতে পারেন। আপনার যদি পুরানো সংস্করণগুলি সমর্থন করার প্রয়োজন হয় তবে আপনি উপরের কোডটি ব্যবহার করতে পারবেন এবং # ডিভাইস চলমান ডিভাইসগুলির জন্য ইউআইভিউপ্রোপার্টিএনিমেটার ব্যবহারের জন্য উপলভ্য কীওয়ার্ডটি ব্যবহার করতে পারেন আশা করি এটি সহায়তা করে!
ডেরিক হান্ট

5

কনসোলের সতর্কতা ব্যতীত আপনি কোনও সমস্যা ছাড়াই ভিজ্যুয়াল এফেক্ট ভিউয়ের আলফা পরিবর্তন করতে পারেন। অস্পষ্টতার চেয়ে দৃশ্যটি আংশিক স্বচ্ছ হিসাবে উপস্থিত হতে পারে। অ্যানিমেশন চলাকালীন আপনি যদি আলফা পরিবর্তন করেন তবে এটি সাধারণত কোনও সমস্যা হয় না।

আপনার অ্যাপ্লিকেশন ক্রাশ হবে না বা এর জন্য প্রত্যাখ্যাত হবে না। এটি একটি আসল ডিভাইসে পরীক্ষা করুন (বা আট)। আপনি কীভাবে এটি দেখতে এবং সম্পাদন করে তাতে সন্তুষ্ট হন তবে তা ঠিক আছে। অ্যাপল আপনাকে কেবলমাত্র সতর্ক করে দিয়েছে যে এটি দেখতে বা সম্পাদন করতে পারে না এবং সেই সাথে 1 এর একটি আলফা মান সহ একটি ভিজ্যুয়াল এফেক্ট ভিউ হতে পারে।


5

আপনি একটি স্ট্যাটিক অন্তর্নিহিত ভিউয়ের স্ন্যাপশট নিতে পারেন এবং অস্পষ্ট দর্শনটির অস্বচ্ছতা স্পর্শ না করে এটিকে ফেইড করে নিতে পারেন out ব্লারভিউয়ের আইভার ধরে নেওয়া:

func addBlur() {
    guard let blurEffectView = blurEffectView else { return }

    //snapShot = UIScreen.mainScreen().snapshotViewAfterScreenUpdates(false)
    let snapShot = self.view.snapshotViewAfterScreenUpdates(false)
    view.addSubview(blurEffectView)
    view.addSubview(snapShot)

    UIView.animateWithDuration(0.25, animations: {
        snapShot.alpha = 0.0
    }, completion: { (finished: Bool) -> Void in
        snapShot.removeFromSuperview()
    } )
}

func removeBlur() {
    guard let blurEffectView = blurEffectView else { return }

    let snapShot = self.view.snapshotViewAfterScreenUpdates(false)
    snapShot.alpha = 0.0
    view.addSubview(snapShot)

    UIView.animateWithDuration(0.25, animations: {
        snapShot.alpha = 1.0
    }, completion: { (finished: Bool) -> Void in
        blurEffectView.removeFromSuperview()
        snapShot.removeFromSuperview()
    } )
}

দুর্দান্ত ধারণাটিও তবে এটি অস্পষ্ট দৃশ্যের নীচে অ স্থিত (চলমান / অ্যানিমেটিং) সামগ্রীর পক্ষে ভাল কাজ করবে না।
লিনাসগেফার্থ

@ লিনাসজি। ঠিক আছে, অ্যাপল বলছে যে একটি অস্পষ্ট দর্শন আলফা দিয়ে প্রায় খেলা উচিত নয়। আপনি আপনার বেস ভিউটির স্ক্রিন শটগুলি ধরতে CADisplayLink ব্যবহার করতে পারেন, তারপরে এগুলি চিত্রের দৃশ্যে রেন্ডার করুন (সম্ভবত একটি আপনি করেছেন - সত্যিকারের লাইটওয়েট) - এবং শীর্ষের দৃশ্যে এটির অস্বচ্ছতাটি 0 এ পরিবর্তনের সময় দেখায় সম্ভাব্য তবে অনেকগুলি কাজ।
ডেভিড এইচ

4
এটিই ছিল একমাত্র উপায় (এখনও অবধি) আমি আইওএস 10-তে যা চেয়েছিলাম তা অর্জন করতে সক্ষম হয়েছি - খুব গা dark় অস্পষ্ট প্রভাবের সাথে ফুলস্ক্রিনে একটি মডেলটিতে বিবর্ণ। ধন্যবাদ!
গ্রাহাম

3

আপনি যদি ইউআইআইভিউজুয়ালএফেক্টভিউতে বিবর্ণ হতে চান - আইওএস 10 এর জন্য ইউআইভিউপ্রোপার্টি অ্যানিম্যাটর ব্যবহার করুন

    UIVisualEffectView *blurEffectView = [[UIVisualEffectView alloc] initWithEffect:nil];
    blurEffectView.frame = self.view.frame;
    blurEffectView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

    UIView *blackUIView = [[UIView alloc]initWithFrame:self.view.frame];
    [bacgroundImageView addSubview:blackUIView];
    [blackUIView addSubview:blurEffectView];
    UIViewPropertyAnimator *animator  = [[UIViewPropertyAnimator alloc] initWithDuration:4.f curve:UIViewAnimationCurveLinear animations:^{
        [blurEffectView setEffect:[UIBlurEffect effectWithStyle:UIBlurEffectStyleDark]];
    }];

তারপর আপনি শতাংশ সেট করতে পারেন

[animator setFractionComplete:percent];

আইওএস 9 এর জন্য আপনি আলফা উপাদান ব্যবহার করতে পারেন


4
প্রশ্নটি বিশেষত "সুইফ্ট" ট্যাগ করা হয়েছে, "উদ্দেশ্য-সি" নয়: দয়া করে সুইফটে একটি উত্তর সরবরাহ করুন। ধন্যবাদ!
এরিক আয়া

4
উদ্দেশ্য সি কোড জন্য ধন্যবাদ। অন্যান্য অনেক উদাহরণ লিস্ট করা হয়নি বলে আমি এটি সহজেই পেয়েছি।
অ্যাডাম ওয়ারে

2

ইউআইভিআইসুয়ালএফেক্টভিউয়ের আলফাটি সর্বদা ১ হওয়া উচিত I আমি মনে করি আপনি ব্যাকগ্রাউন্ড রঙের আলফা সেট করে প্রভাবটি অর্জন করতে পারবেন।

সূত্র: https://developer.apple.com/library/ios/docamentation/UIKit/References/UIVisualEffectView/index.html


পিটার, আপনি কীভাবে ব্যাকগ্রাউন্ড রঙের আলফা সেট করবেন তা ব্যাখ্যা করতে পারেন?
বরিস ওয়াই।

@ উদার উদাহরণগুলিতে colorWithAlphaComponent:পদ্ধতিটি ব্যবহার করুন UIColor। যদিও ব্যাকগ্রাউন্ডের রঙ সেট করার সাথে একই প্রভাব অর্জন করবেন তা নিশ্চিত নন।
নেমেসিস

ব্যাকগ্রাউন্ড পরিবর্তন করে আলফা উপাদানটি প্রত্যাশার মতো কাজ করছে না
হংকাহাও জাং

1

আমি একটি ইউভিউ তৈরি করি যা আলফা 0 হয় এবং এর সাবভিউ হিসাবে ব্লারভিউ যুক্ত করি। সুতরাং আমি এনিমেশন সহ এটিকে গোপন / প্রদর্শন করতে বা গোলাকার কোণগুলিতে রাখতে পারি।


1

আমি UIVisualEffectViewএবং সামগ্রীর জন্য পৃথক অ্যানিমেশন ব্যবহার করে নিম্নলিখিত সমাধানটি দিয়ে শেষ করেছি । আমি ব্যবহৃত viewWithTag()পদ্ধতি একটি রেফারেন্স পেতে UIViewভিতরে UIVisualEffectView

let blurEffectView = UIVisualEffectView()
// Fade in
UIView.animateWithDuration(1) { self.blurEffectView.effect = UIBlurEffect(style: .Light) }    
UIView.animateWithDuration(1) { self.blurEffectView.viewWithTag(1)?.alpha = 1 }
// Fade out
UIView.animateWithDuration(1) { self.blurEffectView.effect = nil }    
UIView.animateWithDuration(1) { self.blurEffectView.viewWithTag(1)?.alpha = 0 }

আমি একক অ্যানিমেশনটিকে আলফা পরিবর্তন করতে পছন্দ করব তবে এটি ত্রুটি এড়ানো এবং ঠিক তেমন কাজ করে বলে মনে হচ্ছে।


1

আমার সবেমাত্র এই সমস্যাটি হয়েছিল এবং আমি যেভাবে ঘুরেছিলাম এটি ছিল একটি ইউআইভিউতে ইউআইভিউজুয়ালএফেক্টভিউ রাখা এবং সেই ইউআইভিউয়ের আলফাটি অ্যানিমেটেড করা।

এটি খুব ভালভাবে কাজ করেছে, এটি বাদে যত তাড়াতাড়ি এটি আলফা পরিবর্তিত হয় 1.0 এর নীচে এটি একটি শক্ত সাদা হয়ে গেছে এবং খুব ঝাঁকুনির মতো দেখায়। এটিকে পেতে, আপনাকে অবশ্যই ইউআইভিউর স্তরের বৈশিষ্ট্যটি সেট করতে হবে containerView.layer.allowsGroupOpacity = falseএবং এটি এটি সাদা ঝলকানো থেকে আটকাবে।

এখন আপনি এটি আলফা সম্পত্তি ব্যবহার করে ভিজ্যুয়াল এফেক্ট ভিউ এবং অন্য কোনও মতামত যুক্ত ইউআইভিউকে আস্তরণ / ম্লান করতে পারবেন এবং কোনও গ্রাফিকাল গ্লিটস বা এটি কোনও সতর্কতা বার্তা লগইন করার জন্য চিন্তা করতে হবে না।


0
_visualEffectView.contentView.alpha = 0;

ইউআইভিউজুয়ালএফেক্টভিউয়ের আলফা পরিবর্তন করতে আপনার _ভিউজুয়ালএফেক্টভিউয়ের সামগ্রীটি পরিবর্তন করা উচিত you আপনি যদি _ভিউজুয়ালএফেক্টভিউয়ের আলফা পরিবর্তন করেন তবে আপনি এটি পাবেন

<UIVisualEffectView 0x7ff7bb54b490> is being asked to animate its opacity. This will cause the effect to appear broken until opacity returns to 1.

0

সাধারণত, যখন আমি স্ক্রিনে একটি ভিউ কন্ট্রোলার উপস্থাপন করি এবং উপস্থাপনামূলক ভিউ কন্ট্রোলারটিকে অস্পষ্ট করতে চাই তখন আমি কেবল একটি ঝাপসা অ্যানিমেট করতে চাই। এখানে একটি এক্সটেনশান রয়েছে যা এটির সুবিধার্থে ভিউ কন্ট্রোলারে অস্পষ্ট () এবং আনব্লুর () যুক্ত করে:

extension UIViewController {

   func blur() {
       //   Blur out the current view
       let blurView = UIVisualEffectView(frame: self.view.frame)
       self.view.addSubview(blurView)
       UIView.animate(withDuration:0.25) {
           blurView.effect = UIBlurEffect(style: .light)
       }
   }

   func unblur() {
       for childView in view.subviews {
           guard let effectView = childView as? UIVisualEffectView else { continue }
           UIView.animate(withDuration: 0.25, animations: {
                effectView.effect = nil
           }) {
               didFinish in
               effectView.removeFromSuperview()
           }
       }
   }
}

আপনি অবশ্যই ব্যবহারকারীকে এফেক্ট স্টাইলটি বেছে নিতে, সময়কালটি সংশোধন করতে, অ্যানিমেশনটি শেষ করার পরে কিছু কল করতে পারেন, ব্লার () এ যুক্ত ভিজ্যুয়াল এফেক্ট ভিউটিকে ট্যাগ করুন (যখন আপনি আনব্লুর করেন তবে এটি কেবলমাত্র মুছে ফেলা হয় না তা নিশ্চিত করতে ( ) ইত্যাদি, তবে আমি এখন পর্যন্ত এই জিনিসগুলি করার প্রয়োজনের সন্ধান পাইনি, যেহেতু এটি "আগুন এবং ভুলে যাও" প্রকারের অপারেশন হিসাবে থাকে।


"আগুন এবং ভুলে যাও" তাই সম্পর্কিত! হা
লিনাসগফার্থ

0

@ সিসির উত্তরের ভিত্তিতে আমি একটি ভিউ অস্পষ্ট করতে তার এক্সটেনশানটি সংশোধন করেছি

এক্সটেনশন ইউআইভিউ {

    ফানক ব্লার () {
        // বর্তমান দৃশ্যটি অস্পষ্ট করুন
        ব্লারভিউ = ইউআইভিউজুয়ালএফেক্টভিউ (ফ্রেম: স্ব.বাউন্ডস) যাক
        self.addSubview (ব্লারভিউ)
        ইউআইভিউ.অ্যানিম্যাট (সহ সময়কাল: 0.25) {
            blurView.effect = UIBlurEffect (স্টাইল:। ডার্ক)
        }
    }

    ফানক আনব্লুর () {
        সাবভিউতে চাইল্ডভিউয়ের জন্য
            প্রহরী যাক প্রভাব ভিউ = চাইল্ড ভিউ হিসাবে? ইউআইভিউজুয়ালএফেক্টভিউ অন্য {চালিয়ে যান}
            ইউআইভিউ.অ্যানিম্যাট (সাথে সময়কাল: 2.5, অ্যানিমেশন:
                ইফেক্টভিউ.এফেক্ট = শূন্য
            }) {
                ফিনিশ ইন
                ইফেক্টভিউ.রিমোভফর্মসুপার্ভিউ ()
            }
        }
    }
}

0

@ টেল4টেল এবং @ সিসি প্রতিক্রিয়াটি উন্নত করা হচ্ছে, এখানে প্যারামিটার এবং একটি সংক্ষিপ্ত বিবরণ সহ একটি এক্সটেনশান রয়েছে।

extension UIView {

    // Perform a blur animation in the whole view
    // Effect tone can be .light, .dark, .regular...
    func blur(duration inSeconds: Double, effect tone: UIBlurEffectStyle) {
        let blurView = UIVisualEffectView(frame: self.bounds)
        self.addSubview(blurView)
        UIView.animate(withDuration: inSeconds) {
            blurView.effect = UIBlurEffect(style: tone)
        }
    }

    // Perform an unblur animation in the whole view
    func unblur(duration inSeconds: Double) {
        for childView in subviews {
            guard let effectView = childView as? UIVisualEffectView else { continue 
        }
            UIView.animate(withDuration: inSeconds, animations: {
                effectView.effect = nil
            }){
                didFinish in effectView.removeFromSuperview()
            }
        }
    }
}

তারপরে আপনি এটি ব্যবহার করতে পারেন: view.blur(duration: 5.0, effect: .light) বা view.unblur(duration: 3.0)

viewDidLoad()এটি অ্যানিমেশনকে ওভাররাইড করবে বলে এটি ব্যবহার করবেন না মনে রাখবেন । এছাড়াও, কোনও সিমুলেটারে চলার সময় অ্যানিমেশন (ডিবাগ> গ্রাফিক্স মানের ওভাররাইড> উচ্চ গুণমান) দেখতে সক্ষম হতে গ্রাফিকগুলি উচ্চ স্তরে পরিণত করুন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.