কোনও ইউআইবাটন - আইওএসে নেটিভ "পালস এফেক্ট" অ্যানিমেশন কীভাবে করবেন


89

আমি একটি ইউআইবাটনটিতে কিছু ধরণের নাড়ি অ্যানিমেশন (অসীম লুপ "স্কেল ইন - স্কেল আউট") রাখতে চাই যাতে এটি তাত্ক্ষণিকভাবে ব্যবহারকারীদের দৃষ্টি আকর্ষণ করে।

আমি এই লিঙ্কটি দেখেছি - ওয়েবেকিট-অ্যানিমেশন - বাহিরের রিংগুলি ব্যবহার করে কীভাবে একটি পালস এফেক্ট তৈরি করা যায় তবে আমি ভাবছিলাম যে কেবল নেটিভ ফ্রেমওয়ার্ক ব্যবহার করে এটি করার কোনও উপায় ছিল কিনা?

উত্তর:


200
CABasicAnimation *theAnimation;

theAnimation=[CABasicAnimation animationWithKeyPath:@"opacity"];
theAnimation.duration=1.0;
theAnimation.repeatCount=HUGE_VALF;
theAnimation.autoreverses=YES;
theAnimation.fromValue=[NSNumber numberWithFloat:1.0];
theAnimation.toValue=[NSNumber numberWithFloat:0.0];
[theLayer addAnimation:theAnimation forKey:@"animateOpacity"]; //myButton.layer instead of

সুইফট

let pulseAnimation = CABasicAnimation(keyPath: #keyPath(CALayer.opacity))
pulseAnimation.duration = 1
pulseAnimation.fromValue = 0
pulseAnimation.toValue = 1
pulseAnimation.timingFunction = CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeInEaseOut)
pulseAnimation.autoreverses = true
pulseAnimation.repeatCount = .greatestFiniteMagnitude
view.layer.add(pulseAnimation, forKey: "animateOpacity")

"অ্যানিমেটিং স্তর সামগ্রী" নিবন্ধটি দেখুন


4
আপনার উত্তরের জন্য ধন্যবাদ! আমাকে বলতে হবে আমি যদিও কিছুটা আটকে আছি। আমি ক্যালায়ারের সাথে মোটেও পরিচিত নই এবং এটি আমার ইউআইবুটনের সাথে কীভাবে সংযুক্ত করব তা আমি নিশ্চিত নই। প্লাস আপনার কোডটি দেখে মনে হচ্ছে এটি স্কেল নয়, ধোঁকায় পরিবর্তন করছে।
জোহান

8
ঠিক আছে). 'পালস অ্যানিমেটিং' একটি শব্দটি সাধারণত ঝাঁকুনির প্রভাবের জন্য প্রয়োগ করা হয় - যেমনটি এই লিঙ্কটিতে যেমন বলা হয়েছে। এখন আমি আপনার প্রশ্নটি আবার পড়ি এবং বুঝতে চাই আপনি কী চান। প্রথমদিকে, প্রতিটি দৃশ্যের নিজস্ব স্তর থাকে। যদি প্রকল্পে কোয়ার্টজোর ফ্রেমওয়ার্ক যুক্ত করা হয় তবে কেবল myView.layerএটি অ্যাক্সেস করতে টাইপ করুন । আপনি কোর অ্যানিমেশন দিয়ে স্তরগুলি অ্যানিমেট করতে পারেন। স্কেল রূপান্তরের জন্য আপনি এই পদ্ধতিটি ব্যবহার করতে পারেন: কাঠামো ক্ষেত্রগুলির জন্য মূল পথ সমর্থন
বেরিলিয়াম

7
কল্পনাপ্রসূত! @ "অস্বচ্ছতা" এর পরিবর্তে @ "ট্রান্সফর্ম.স্কেল" ব্যবহার করা কবজির মতো কাজ করে। অনেক ধন্যবাদ!
জোহান

4
আপনার যদি ইতিমধ্যে এটি না থাকে তবে আপনাকে #import <QuartzCore/QuartzCore.h>ক্যালিয়ারের জন্য সমস্ত সংজ্ঞা পেতে যুক্ত করতে হবে।
প্রোগ্রামার

ইউজিএইচ! আপনি যদি আধুনিক আধুনিক সংস্করণে আসল উত্তরটি আপডেট না করেন তবে 3 বছরের পুরানো উত্তরগুলি সম্পাদনা করবেন না। স্পেস যুক্ত করা এটি আপডেট করে না। বিশেষত এটি 3 বছর পরে পুনরুত্থান না।
ফোগমিস্টার

31

এটির জন্য দ্রুত কোডটি এখানে;)

let pulseAnimation:CABasicAnimation = CABasicAnimation(keyPath: "transform.scale")
pulseAnimation.duration = 1.0
pulseAnimation.toValue = NSNumber(value: 1.0)
pulseAnimation.timingFunction = CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeInEaseOut)
pulseAnimation.autoreverses = true
pulseAnimation.repeatCount = .greatestFiniteMagnitude
self.view.layer.add(pulseAnimation, forKey: nil)

4
সমস্ত আধা-কলোন দিয়ে কী হবে? ;)
খ্রিস্টান

@ ক্রিশ্চিয়ান আধা কোলন নাড়ির ধরণটি অ্যানিমেশন ধ্রুবক সেট করে। এটি ব্যবহার করার প্রয়োজন নেই তবে কোনও অ্যাসাইনমেন্টের ডান হাতটি এটি স্পষ্ট করে না যে এটি কী ধরণের কাজ বরাদ্দ করবে it
স্কট চৌ চৌ

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

নিশ্চিত করুন যে কোনও ভ্যালু
কেভ ওয়াটস

9

সুইফট কোডটি একটি অনুপস্থিত fromValue, এটি কাজ করার জন্য আমাকে এটি যুক্ত করতে হয়েছিল।

pulseAnimation.fromValue = NSNumber(float: 0.0)

এছাড়াও forKeyসেট করা উচিত, অন্যথায় removeAnimationকাজ করে না।

self.view.layer.addAnimation(pulseAnimation, forKey: "layerAnimation")

3
func animationScaleEffect(view:UIView,animationTime:Float)
{
    UIView.animateWithDuration(NSTimeInterval(animationTime), animations: {

        view.transform = CGAffineTransformMakeScale(0.6, 0.6)

        },completion:{completion in
            UIView.animateWithDuration(NSTimeInterval(animationTime), animations: { () -> Void in

                view.transform = CGAffineTransformMakeScale(1, 1)
            })
    })

}


@IBOutlet weak var perform: UIButton!

@IBAction func prefo(sender: AnyObject) {
    self.animationScaleEffect(perform, animationTime: 0.7)
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.