मैं एक रिमोट अधिसूचना आने पर 5s के लिए स्क्रीन पर एक कस्टम UIView
प्रदर्शित करने की कोशिश कर रहा हूं।जीसीडी के साथ 'धारावाहिक' एनीमेशन कैसे करें?
कोड इस तरह:
//customView.alpha = 1.0 here
[UIView animateWithDuration:1 animations:^{
customView.alpha = 0.3;
}
completion:^(BOOL finished){
// remove customView from super view.
}];
समस्या और क्या मैं आवश्यकता
लेकिन कर रहे हैं मामले कि अधिसूचना की एक जोड़ी, कम समय के अंतराल पर आ सकता है, जिसमें कई customView
हो सकता है एक ही समय में एनिमेटिंग हो और कोई दूसरों को कवर कर सकता है।
मैं चाहता हूं कि ये एनिमेशन एक के बाद एक प्रदर्शन करें, ताकि वे संघर्ष न करें।
ग्रहण लेकिन विफल
//(dispatch_queue_t)queue was created in other parts of the code
dispatch_sync(queue, ^{
[UIView animationWithDuration:animations:...];
});
GCD कतार में एनीमेशन करने के बाद, मैं मूल कोड मैं प्रयोग किया जाता है, जो GCD का उपयोग नहीं किया रूप में एक ही परिणाम मिला। एनिमेशन अभी भी विरोधाभासी हैं।
BTW, मैंने सुना है कि एनिमेशन या कार्यों यूआई शामिल हमेशा मुख्य थ्रेड पर चलते जाना चाहिए, लेकिन मेरी दूसरी कोड में एनीमेशन ठग किया लग रहा था। क्यूं कर?
आपके पास @Ducan जैसा ही विचार है। आपके कोड के लिए धन्यवाद। और क्या आपको लगता है कि हमें 'self.numberOfTimesToRunAnimation' लॉक करना चाहिए? – studyro
हां। संपत्ति को "nonatomic" के रूप में परिभाषित नहीं करते हैं और कभी भी चर का उपयोग नहीं करते (हमेशा संपत्ति का उपयोग करते हुए) सिस्टम आपके लिए वैरिएबल को लॉक कर देगा ताकि दो थ्रेड एक ही समय में इसे पढ़/लिख न सकें। –
बहुत अच्छा। मैंने खंडित नियंत्रण यूआई को नियंत्रित करने के लिए इसका इस्तेमाल किया। 'चयनित इंडेक्स' को संपत्ति में डालकर, इसे पूरा करने पर इसे 'NSNotFound' पर सेट करके, मुझे एनीमेशन के दौरान नियंत्रण को अक्षम करने की आवश्यकता नहीं है। धन्यवाद! –