मैं निम्नलिखित पढ़ा है, One step affine transform for rotation around a point? से:मैं एक बिंदु के चारों ओर एक छवि को भरोसेमंद कैसे घुमा सकता हूं?
CGAffineTransform transform = CGAffineTransformMakeTranslation(x, y);
transform = CGAffineTransformRotate(transform, a);
transform = CGAffineTransformTranslate(transform,-x,-y);
हालांकि, जब मैं इस तब्दील छवियों सभी नक्शे पर, और शायद ही कभी स्क्रीन पर रहे हैं।
मैंने सिस्टम बनाने के लिए थोड़ा सा प्रयास किया है जहां यह छवियों को रखेगा; यदि आप एक लूप चलाते हैं और कई मान देते हैं, तो सर्पिल दिखाई देता है। हालांकि, जब मैं अंततः छवियों के घूर्णन और उन बिंदुओं के बीच संबंधों को उलझाने में सक्षम हो सकता हूं, जिन्हें मैं चाहता हूं कि वे घूमने के लिए चाहते हैं, तो मैं सबसे अच्छा समाधान मांगना चाहता हूं "मेरे पास एक छवि है; मैं इस बिंदु पर विचार करता हूं केंद्र; मैं चाहता हूं कि यह इस राशि से अपने केंद्र के चारों ओर घूमता है लेकिन अन्यथा विस्थापित नहीं होता है। "
मैं http://JonathansCorner.com/ancient-clock/ का एक संशोधित बंदरगाह बनाने की कोशिश कर रहा हूं, और अभी मैं घंटे का हाथ रखने की कोशिश कर रहा हूं। उपरोक्त गीत और नृत्य करने के सभी प्रयास, और इसका अनुवाद करें ताकि उसका केंद्र वांछित केंद्र पर हो, विफल हो गया है।
कैसे, इस घड़ी के हाथों के लिए, क्या मैं कह सकता हूं "मैं निम्नलिखित घूर्णन में हाथ चाहता हूं" और उन्हें उचित रूप से केंद्र के चारों ओर रखा गया है?
--EDIT--
इस कोड, एक टिप्पणी के जवाब में परतों का उपयोग करने की कोशिश में संपादित की महत्वपूर्ण हिस्सा है:
UIImage *hourHandImage = [UIImage imageNamed:@"hour-hand.png"];
UIImageView *hourHandView = [[UIImageView alloc] initWithImage:hourHandImage];
float hourRotation = .5;
hourHandImage = [UIImage imageNamed:@"hour-hand.png"];
hourHandView = [[UIImageView alloc] initWithImage:hourHandImage];
CGAffineTransform transform = CGAffineTransformMakeTranslation(centerX - 21, -centerY - 121);
// transform = CGAffineTransformRotate(transform, hourRotation);
// transform = CGAffineTransformTranslate(transform, 2 * centerX, 2 * centerY);
hourHandView.transform = transform;
hourHandView.layer.anchorPoint = CGPointMake(centerX, centerY);
hourHandView.layer.affineTransform = CGAffineTransformRotate(transform, hourRotation);
[self.view addSubview:hourHandView];
धन्यवाद,
- EDIT -
अब मेरे पास कुछ ख़राब है; अगर मैं निर्देश के कुछ का पालन करें, मेरे पास है:
CGAffineTransform transform = CGAffineTransformMakeTranslation(100 -21, 100 -121);
transform = CGAffineTransformRotate(transform, hour/12.0 * M_PI * 2.0);
transform = CGAffineTransformTranslate(transform, -330, 330);
hourHandView.transform = transform;
मैं उन संख्याओं बाहर हो रही पर काम करना चाहते हैं, लेकिन इस 9:00 एक घंटे सही ढंग से प्रदर्शित किया है।
आपकी सभी मदद के लिए धन्यवाद!
आप उदाहरण छवियों को आप पोस्ट कर सकता की एक जोड़ी है? आप 'x' और' y' के रूप में क्या उपयोग कर रहे हैं? आप जिस चीज को घुमाने की कोशिश कर रहे हैं उसके बाध्य आयत के क्रमशः, आधा चौड़ाई और ऊंचाई होना चाहिए। –
इसके अलावा, 'ए' क्या है? ध्यान दें कि इसे रेडियंस में व्यक्त किया जाना चाहिए, डिग्री नहीं। –
दृश्य के लिए सभी ज्यामितीय जोड़-विरूपण एंकर बिंदु के आसपास होते हैं। उदाहरण, अगर एंकरपॉइंट = {0.5,0.5} (केंद्र), दृश्य घूमता है जैसे कि केंद्र के माध्यम से एक ज़ेड-अक्ष सही था। घड़ी के हाथ लगभग टिप के चारों ओर घूमते हैं, इसलिए आपको घंटा की तरह कुछ चाहिए .layer.anchorPoint = CGPointMake (0.5f, 0.9f); – Jano