क्षमा करें अगर यह स्पष्ट है या कहीं और कवर किया गया है, लेकिन मैं पूरे दिन गुगल रहा हूं और वास्तव में कोई समाधान नहीं मिला है जो वास्तव में काम करता है।आईफोन के लिए क्वार्ट्ज 2 डी में रोटेशन ट्रांसफॉर्म करते समय मैं मूल को स्थानांतरित कर सकता हूं?
मेरी समस्या इस प्रकार है: मैं वर्तमान में एक पूर्ण स्क्रीन UIView में एक छवि खींच रहा हूं, उदाहरण के लिए हम कहेंगे कि छवि UIView के निचले दाएं कोने में है। मैं उस छवि के केंद्र में एक रोटेशन ट्रांसफॉर्म (CGAffineTransformMakeRotation) करना चाहता हूं, हालांकि, डिफ़ॉल्ट रूप से रोटेशन कमांड UIView के केंद्र के चारों ओर घूमता है। नतीजतन, मेरी छवि स्क्रीन के चारों ओर घूमती है जब मैं जगह पर रहने और अपने केंद्र के चारों ओर घूमने के बजाए घुमाता हूं।
जो मैंने एकत्र किया है, उससे मुझे अपने संदर्भ का अनुवाद करने की आवश्यकता है ताकि मूल (UIView का केंद्र) मेरी छवि के केंद्र में हो, घुमाएं, और उसके बाद मूल स्थान पर अनुवाद करके संदर्भ को पुनर्स्थापित करें।
निम्नलिखित काम करने के लिए सबसे नज़दीकी चीज है, लेकिन समस्या यह है कि जब छवि घूर्णन हो रही है, तो यह घूर्णन के दौरान नीचे की ओर बढ़ती है। मैं इस Tweening 1 कदम का अनुवाद और 3 कदम बजाय सिर्फ एहसास है कि तब्दील हो पर शुरुआत और अंत बिंदु ही होगा की का अनुवाद एनीमेशन के कारण होता है लगता है ...
// Before this i'd make a call to a function that draws a path to a passed in context
CGAffineTransform inverseTranslation = CGAffineTransformMakeTranslation(transX, transY);
CGAffineTransform translation = CGAffineTransformMakeTranslation(-transX, -transY);
CGAffineTransform rot = CGAffineTransformMakeRotation(3.14);
CGAffineTransform final = CGAffineTransformConcat(CGAffineTransformConcat(inverseTranslation, rot), translation);
// Then i apply the transformation animation like normal using self.transform = final etc etc
मैं भी तरह सामान की कोशिश की है CGContextTranslateCTM और CGContextSaveGState/UIGraphicsPushContext, लेकिन इनका बहुत कम प्रभाव पड़ता है।
मैं इसके साथ दिनों से लड़ रहा हूं और मेरा वर्तमान समाधान करीब लगता है, लेकिन मुझे कोई संकेत नहीं है कि अनुवाद ट्विंगिंग से कैसे छुटकारा पाना है। क्या किसी के पास इसका समाधान है या इसके बारे में जाने का एक बेहतर तरीका है?
[अद्यतन] समय के लिए मैं अपनी छवि को UIview के केंद्र में केंद्रित कर रहा हूं और फिर UIView.center प्रॉपर्टी को मूल में सेट करना चाहता हूं, जिसे मैं घूमना चाहता हूं और फिर घुमावदार आदेश कर रहा हूं। एक हैक की तरह लगता है, लेकिन जब तक मैं असली अनुवाद काम नहीं कर सकता, यह मेरी एकमात्र पसंद है। धन्यवाद!
त्वरित टिप्पणी- यह दिखाने के लिए संपादित किया गया है कि आपको पीआई मानों के साथ काम करते समय math.h स्थिरांक का उपयोग करना चाहिए। M_PI_4, M_PI_2, M_PI सभी गोल करने वाली त्रुटियों की तुलना में बेहतर और अधिक सटीक हैं :) –