एनबी पर एक परत को घुमाने के लिए 10.8 पर एंकरपॉइंट सेट करें एनबी: यह ओएस एक्स पर एक कोको ऐप के लिए है, आईओएस नहीं।कोर एनीमेशन: अपने केंद्र
मेरे पास एक परत समर्थित एनएसबटन (एनएसवी व्यू का उप-वर्ग) है। मैं क्या करना चाहता हूं कोर एनीमेशन का उपयोग करके उस बटन को घुमाएं। मैं यह करने के लिए निम्न कोड का उपयोग कर रहा:
CABasicAnimation *a = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
a.fromValue = [NSNumber numberWithFloat:0];
a.toValue = [NSNumber numberWithFloat:-M_PI*2];
[_refreshButton.layer setAnchorPoint:CGPointMake(0.5, 0.5)];
a.duration = 1.8; // seconds
a.repeatCount = HUGE_VAL;
[_refreshButton.layer addAnimation:a forKey:nil];
यह काम करता है सिवाय इसके कि जब यह चलता है, परत कूदता नीचे और के लिए छोड़ दिया ताकि उसके केंद्र बिंदु NSView, के मूल बिंदु पर है जो (0,0) पर निचला बायां कोने है। परत तब उसके केंद्र के बारे में घूमती है, लेकिन जाहिर है कि कूद-से-निचले-बाएं कोने को स्वीकार्य नहीं है।
तो, बहुत पढ़ने के बाद, मैं 10.8 एपीआई रिलीज़ नोट में इस लाइन पाया:
On 10.8, AppKit will control the following properties on a CALayer
(both when "layer-hosted" or "layer-backed"): geometryFlipped, bounds,
frame (implied), position, anchorPoint, transform, shadow*, hidden,
filters, and compositingFilter. Use the appropriate NSView cover methods
to change these properties.
इसका मतलब है कि AppKit "अनदेखी" है मेरे कॉल उपरोक्त कोड में -setAnchorPoint और इसके बजाय, के लिए, है एनएसवीव के मूल (0,0) को एंकर पॉइंट सेट करना।
मेरा सवाल है: मैं इसे कैसे हल करूं? परत के लिए एंकरपॉइंट सेट करने के लिए "उपयुक्त NSView कवर विधि" क्या है (मुझे NSView पर ऐसी कोई विधि नहीं मिल सकती है)। दिन के अंत में, मैं चाहता हूं कि मेरा बटन अनिश्चित काल तक अपने केंद्र बिंदु के चारों ओर घुमाए।
बिल्कुल सही! तुम्हे पता हैं; मैंने स्थिति की संपत्ति देखी लेकिन इसे कोशिश नहीं की क्योंकि मैंने ऊपर दिए गए नोट को पढ़ा है जो कहता है कि ऐपकिट इसे नियंत्रित करने जा रहा है। समाधान के लिए धन्यवाद! – Bryan
कोई विचार क्यों रोटेशन M_PI/2 उसके बाद पहली बार घड़ी के विपरीत घुमाएगा? – greg
मुझे आपका कोड देखना होगा। आपको अपना प्रश्न पोस्ट करना चाहिए। –