iphone - UIScrollView ImageView with pins on top -
मेरे पास एक UIScrollView
है जिसमें UIImageView
है। मैं इस imageView
पर पिंस दिखाना चाहता हूं जब मैं पिन को ImageView
के उप-दृश्यों के रूप में जोड़ता हूं, तो सब कुछ महान होता है, जब आप ज़ूम ज़ूम करते हैं तो पिन पर भी होता है मुझे यह व्यवहार नहीं चाहिए और मेरी पिन को वही रहने की इच्छा है।
इसलिए मैं पिंस को एक और दृश्य में जोड़ना चाहता हूं जो कि ImageView के शीर्ष पर बैठता है और यह भी UIScrollView
। यहां विचार यह है कि यदि आप सोचेंगे कि एक परत है जो मैप के ऊपर घुड़सवार हो जाता है और अभी तक स्कैन नहीं करेगा, जहां मैं उन्हें प्लॉट करता हूं।
जब भी परत दृश्य में जोड़ा गया पिन अगर ImageView
तराजू हालांकि, यह मुद्दा तब बन जाता है जब पिंस की स्थिति मूल मूल एक्स / वाई से मेल नहीं खाती क्योंकि ImageView
ने एक पैमाने पर रूपांतरण किया है।
असल में यह एक कस्टम मानचित्र है पिंस के साथ एक स्थान का मैं पिंस को फ़्लोट करने की कोशिश कर रहा हूं और मेरी छवि दृश्य पर ज़ूम इन और आउट नहीं करता, फिर भी यह याद रखता हूं कि ज़ूम होने पर मैंने उन्हें कहाँ रखा था।
कुछ कोड:
scrollView = [[UIScrollView alloc] initWithFrame: viewRect]; ScrollView.delegate = self; ScrollView.pagingEnabled = NO; ScrollView.scrollsToTop = NO; [ScrollView setBackgroundColor: [UIColor clearColor]]; ScrollView.clipsToBounds = हाँ; // डिफ़ॉल्ट नहीं है, हम अपने scrollview scrollView.bounces = YES के भीतर ड्राइंग को प्रतिबंधित करना चाहते हैं; ScrollView.autoresizingMask = UIViewAutoresizingFlexibleHight; ScrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite; ImageViewMap = [[UIImageView alloc] initWithImage: [UIImage imageNamed: @ "image.png"]]; ImageViewMap.userInteractionEnabled = हाँ; ViewRect = CGRectMake (0,0, imageViewMap.image.size.width, imageViewMap.image.size.height); // viewRect = CGRectMake (0,0,2976,3928); [ScrollView जोड़ेंसाथ दृश्य: imageViewMap]; [ScrollView सेट कंटेंट साइज़: CGSizeMake (viewRect.size.width, viewRect.size.height)]; IconsView = [[UIView alloc] initWithFrame: imageViewMap.frame]; [ScrollView जोड़ें Subview: iconsView];
कुछ ईवेंट पर बाद में पिन जोड़ने के लिए कोड।
<प्री> [icons addSubview: pinIcon];
मैं टीपी आंकड़ा करने की कोशिश में फँस गया हूँ कि कैसे मेरे पिन को नक्शे पर घुमाए बिना पैमाने पर ले जायें। मैं पिन (आइकंस व्यू) को समर्पित एक दृश्य में सभी पिनों को रखने का आपके विचार पसंद करता हूं, लेकिन मैंने उन्हें सिर्फ छविव्यूमैं के नाम के उप-दृश्यों के रूप में जोड़ने का निर्णय लिया है।
अपने प्रोजेक्ट में क्वार्ट्ज़कोर.फ्रेमवर्क फ़ाइल आयात करें।
अपने दृश्य नियंत्रक MyViewController को कॉल करें।
#import & lt; क्वार्ट्ज़कोर / क्वार्ट्ज़ कॉयर एच & gt; @ इंटरफ़ेस MyViewController: UIViewController & lt; UIScrollViewDelegate & gt; @ प्रॉपर्टी (बनाए रखना) UIScrollView * scrollView; @ प्रॉपर्टी (बनाए रखना) UIImageView * imageView;
// और इतने पर
@implementation MyViewController @Syntehesize scrollView; @ छवि का संश्लेषण करें;
मुझे लगता है कि आपके पास एक पिन दृश्य या ड्रॉपपिन वीआईयूआई नियंत्रक नामक एक दृश्य नियंत्रक है। यदि आप बस एक छवि का उपयोग कर रहे हैं, यह एक UIImageView हो सकता है, लेकिन मेरे पिनों के लेबल हैं, इसलिए मैंने एक xib का उपयोग किया। पिन को एक्सब के निचले केंद्र पर इंगित करना चाहिए क्योंकि हम वहां एक लंगर बिंदु डालने जा रहे हैं।
अपने MyViewController के अपने दृश्यडायडलोड में, अपने पिन दृश्यों को छवि दृश्य के उप-दृश्यों के रूप में जोड़ें। स्क्रॉलव्यू में एक सबव्यू के रूप में छवि देखें। ScrollView का सामग्री आकार सेट करें।
scrollView.delegate = self;
इन प्रतिनिधियों के तरीकों का प्रयोग करें:
- (शून्य) स्क्रॉलव्यूडिज ज़ूम: (UIScrollView *) aScrollView {for (UIView * dropPinView in imageView.subviews) {CGRect पुरानाफ़्रेम = ड्रॉपपिनविय.फ्रेम; // 0.5 का अर्थ है कि एंकर एक्स एक्सिस पर केंद्रित है। 1 का अर्थ है कि लंगर दृश्य के निचले भाग में है। यदि आप इस रेखा को टिप्पणी करते हैं, तो पिन का केंद्र उस स्थान पर रहेगा जहां पर ज़्यादा ज़ूम नहीं है। मेरे पास यह है कि पिन के निचले हिस्से को तय किया गया। इससे उपयोगकर्ता रोमियोएफ को मदद करनी चाहिए [DropPinView.layer setAnchorPoint: CGPointMake (0.5, 1)]; DropPinView.frame = पुरानाफ़्रेम; // जब आप स्क्रॉल व्यू पर ज़ूम इन करते हैं, तो यह ज़ूम ज़ूम पैमाने पर बड़ा हो जाता है। // आप इस वैल्यू के व्युत्क्रम से स्केलिंग करके पिन को रूपांतरित करते हैं। DropPinView.transform = सीएजीफीनट्रांसफ़ॉर्ममाकेस्केल (1.0 / स्क्रॉलव्यू.जूमस्केल, 1.0 / स्क्रॉलव्यूजमस्केल); } - (UIView *) viewForZoomingInScrollView: (UIScrollView *) scrollView {return imageView; }
Comments
Post a Comment