में लेबल को फीका या बाहर कैसे बनाया जाए, मैं viewDidLoad()
में एक लेबल फीका बनाने के लिए देख रहा हूं, और उसके बाद टाइमर 3 फीड आउट हो गया है। मैं fadein
या fadeout
फ़ंक्शंस से परिचित नहीं हूं।स्विफ्ट
मैं यह करने के बारे में कैसे जाउंगा?
में लेबल को फीका या बाहर कैसे बनाया जाए, मैं viewDidLoad()
में एक लेबल फीका बनाने के लिए देख रहा हूं, और उसके बाद टाइमर 3 फीड आउट हो गया है। मैं fadein
या fadeout
फ़ंक्शंस से परिचित नहीं हूं।स्विफ्ट
मैं यह करने के बारे में कैसे जाउंगा?
भले ही दृश्य लोड हो गया है, यह उपयोगकर्ता को दिखाई नहीं दे सकता है जब viewDidLoad
कहा जाता है। इसका मतलब यह है कि आपको लगता है कि जब आप इसे देखते हैं तो आपके एनिमेशन पहले ही शुरू हो चुके हैं। इस समस्या को दूर करने के लिए, आप इसके बजाय viewDidAppear
में अपनी एनीमेशन शुरू करना चाहेंगे।
fadeIn
और fadeOut
कार्यों के लिए - वे मौजूद नहीं हैं। आपको उन्हें खुद लिखना होगा। शुक्र है, यह करना बहुत आसान है। नीचे की तरह कुछ अच्छा हो सकता है।
func fadeViewInThenOut(view : UIView, delay: NSTimeInterval) {
let animationDuration = 0.25
// Fade in the view
UIView.animateWithDuration(animationDuration, animations: {() -> Void in
view.alpha = 1
}) { (Bool) -> Void in
// After the animation completes, fade out the view after a delay
UIView.animateWithDuration(animationDuration, delay: delay, options: .CurveEaseInOut, animations: {() -> Void in
view.alpha = 0
},
completion: nil)
}
}
मेरा सुझाव कोड को थोड़ा अधिक मॉड्यूलर और उपयोग करने में आसान बनाने के लिए स्विफ्ट एक्सटेंशन का लाभ उठाना है। उदाहरण के लिए, यदि आप कई लेबलों पर फीडिन/आउट या एक लेबल को फीड इन/आउट करने के लिए बनाना चाहते हैं, तो आपको हर जगह एनिमेट विथडिशन विधियों को पास करना होगा, जो परेशानी हो सकती है। एक क्लीनर विकल्प UIView.swift (हमारे UIView एक्सटेंशन) नामक फ़ाइल बनाने के लिए है। इस फ़ाइल में निम्न कोड जोड़ें:
import Foundation
extension UIView {
func fadeIn(duration: NSTimeInterval = 1.0, delay: NSTimeInterval = 0.0, completion: ((Bool) -> Void) = {(finished: Bool) -> Void in}) {
UIView.animateWithDuration(duration, delay: delay, options: UIViewAnimationOptions.CurveEaseIn, animations: {
self.alpha = 1.0
}, completion: completion) }
func fadeOut(duration: NSTimeInterval = 1.0, delay: NSTimeInterval = 3.0, completion: (Bool) -> Void = {(finished: Bool) -> Void in}) {
UIView.animateWithDuration(duration, delay: delay, options: UIViewAnimationOptions.CurveEaseIn, animations: {
self.alpha = 0.0
}, completion: completion)
}
}
अब आप UIView (जैसे, UILabel, UIImage, आदि) के किसी भी बच्चे को fadein/fadeout कार्यक्षमता जोड़ सकते हैं। अपने viewDidLoad() फ़ंक्शन के अंदर, आप जोड़ सकते हैं:
self.statusLabel.alpha = 0
self.statusLabel.text = "Sample Text Here"
self.myLabel.fadeIn(completion: {
(finished: Bool) -> Void in
self.myLabel.fadeOut()
})
अब, आप, छवि दृश्य, लेबल, पाठ विचारों के लिए इस नमूना कोड का उपयोग कर सकते दृश्य, या UIView के किसी भी बच्चे के साथ-साथ स्क्रॉल करें। आशा है कि ये आपकी मदद करेगा।
अद्यतन स्विफ्ट 3.1 - @Andy कोड पर
func fadeViewInThenOut(view : UIView, delay: TimeInterval) {
let animationDuration = 0.25
// Fade in the view
UIView.animate(withDuration: animationDuration, animations: {() -> Void in
view.alpha = 1
}) { (Bool) -> Void in
// After the animation completes, fade out the view after a delay
UIView.animate(withDuration: animationDuration, delay: delay, options: [.curveEaseOut], animations: {() -> Void in
view.alpha = 0
}, completion: nil)
}
}
संपादन बटन एक कारण के लिए है। सिर्फ वाक्यविन्यास को संशोधित करने के लिए उत्तर देने से कॉपी करना अच्छा नहीं है। – Fogmeister
उत्तर स्विफ्ट 3 के लिए अद्यतन - का उपयोग करते हुए विस्तार
extension UIView {
func fadeIn(duration: TimeInterval = 1.0, delay: TimeInterval = 0.0, completion: @escaping ((Bool) -> Void) = {(finished: Bool) -> Void in}) {
UIView.animate(withDuration: duration, delay: delay, options: UIViewAnimationOptions.curveEaseIn, animations: {
self.alpha = 1.0
}, completion: completion)
}
func fadeOut(duration: TimeInterval = 1.0, delay: TimeInterval = 3.0, completion: @escaping (Bool) -> Void = {(finished: Bool) -> Void in}) {
UIView.animate(withDuration: duration, delay: delay, options: UIViewAnimationOptions.curveEaseIn, animations: {
self.alpha = 0.0
}, completion: completion)
}
}
उपयोग:
self.statusLabel.alpha = 0
self.statusLabel.text = "Sample Text Here"
self.myLabel.fadeIn(completion: {
(finished: Bool) -> Void in
self.myLabel.fadeOut()
})
यह होना चाहिए सही उत्तर। बहुत साफ और अमूर्त दूर। धन्यवाद। – user3286381
यह इस समस्या का एक शानदार संकल्प है। –
यह बहुत अच्छा लग रहा है! धन्यवाद। एफवाईआई "समापन" पैरामीटर को @ एस्केपिंग क्लोजर की आवश्यकता है। – adamcee