में एनिमेटिंग नहीं कर रहा है मुझे लगता है कि मैं कुछ प्राथमिक दिख रहा हूं, लेकिन इंटरनेट पर गलत होने के बजाय इसे खोजने का बेहतर तरीका क्या है?CAGradientLayer गुण UIView एनीमेशन ब्लॉक
मेरे पास काफी मूल यूआई है। मेरे UIViewController
के लिए दृश्य एक उपclass है जिसका +layerClass
CAGradientLayer
है। उपयोगकर्ता के कार्यों के आधार पर, मुझे कुछ UI तत्वों को स्थानांतरित करने और पृष्ठभूमि के ढाल के मानों को बदलने की आवश्यकता है। कोड इस तरह दिखता है:
[UIView animateWithDuration:0.3 animations:^{
self.subview1.frame = CGRectMake(...);
self.subview2.frame = CGRectMake(...);
self.subview2.alpha = 0;
NSArray* newColors = [NSArray arrayWithObjects:
(id)firstColor.CGColor,
(id)secondColor.CGColor,
nil];
[(CAGradientLayer *)self.layer setColors:newColors];
}];
मुद्दा यह है कि परिवर्तन मैं subviews को यह ब्लॉक में बनाना ठीक (सामान ले जाता है और fades) चेतन है, लेकिन ढाल के रंग को नहीं बदलता है। यह बस स्वैप।
अब, the documentation does say कि एनीमेशन ब्लॉक के भीतर कोर एनीमेशन कोड ब्लॉक की गुणों (अवधि, आसान, इत्यादि) का वारिस नहीं करेगा। लेकिन क्या यह मामला है कि यह एनीमेशन लेनदेन को बिल्कुल परिभाषित नहीं करता है? (किए गए दस्तावेज़ों की निहितार्थ यह है कि आप एक डिफ़ॉल्ट एनीमेशन मिल जाएगा हो सकता है, जहां मैं कोई भी मिल रहा है।)
मैं स्पष्ट CAAnimation
उपयोग करने के लिए यह काम करने के लिए है? (और यदि हां, तो क्यों?)
शानदार खोज! इस पर कभी अनुमान लगाया नहीं होगा। –