5

के लिए एंकर पॉइंट व्यू सेट करने के लिए कैसे करें मैं सीखने के उद्देश्य के लिए "सौर" ऐप पर शोध कर रहा हूं। मैंने देखा कि चुटकी इशारा करते हुए एक टाइल ज़ूम किया जा सकता है। जिस तरह से यह ज़ूमिंग स्पष्ट रूप से दिखाया गया था, उसने दिखाया कि यूवीव का एंकर पॉइंट सेट किया था।चुटकी ज़ूम (GMGridView)

आप अपने वीडियो यहाँ http://www.youtube.com/watch?v=FfgWkAuLvng

देख सकते हैं एक ही लक्ष्य को हासिल करने के लिए, मैं GMGridView कोड डाउनलोड किया। मैंने सौर ऐप में समान आउटपुट प्राप्त करने के लिए एंकर पॉइंट सेट करने का प्रयास किया।

मुझे जिस समस्या का सामना करना पड़ रहा है वह है, पहली बार चुटकी ज़ूम मैं इसे एंकर पॉइंट पर ज़ूम नहीं कर सकता, लेकिन बाकी समय। मुझे नहीं पता था कि यह पहली बार एंकर पॉइंट से ज़ूम क्यों नहीं कर रहा है। क्रिप्या मेरि सहायता करे।

मैं निम्नलिखित संशोधित विधि

- (void)pinchGestureUpdated:(UIPinchGestureRecognizer *)pinchGesture 

के रूप में मैं संशोधित रूप में

case UIGestureRecognizerStateBegan: 
     { 
      [self transformingGestureDidBeginWithGesture:pinchGesture]; 
      _transformingItem.contentView.layer.anchorPoint = CGPointMake(0,0.5); 
      break; 
     } 
+0

मुझे लगता है कि आपके पास मौजूदा एंकर पॉइंट को संग्रहीत करने के लिए क्लास वेरिएबल है। क्या आप इस var के लिए प्रारंभिक मान निर्धारित करते हैं?यदि हां, तो आप इसे कहां सेट करते हैं, 'viewDidLoad' या' viewDidAppear'? –

उत्तर

2

कृपया here से लिया गया कोड निम्न परीक्षण करें। यह समझने के लिए anchorPoint के लिए और अधिक की जाँच करें this as well

CGRect oldFrame = _transformingItem.contentView.frame; 
_transformingItem.contentView.layer.anchorPoint = CGPointMake(0, 0); 
_transformingItem.contentView.frame = oldFrame; 

आशा इस मदद करता है, आप और अधिक मदद की जरूरत है मुझे जानते हैं।

+0

यह ठीक काम कर रहा है, धन्यवाद – HarshIT

3

यह तब होता है इशारा पहचानकर्ता के राज्य शुरू क्योंकि जैसे ही आप परत की anchorPoint बदलने के रूप में, आप भी बदल जाएगा परत के दृश्य का केंद्र बिंदु। आइए मान लें कि व्यू का फ्रेम 0,0,100,100 फिर डिफ़ॉल्ट रूप से व्यू का केंद्र 50,50 पर है क्योंकि एंकरपॉइंट 0.5,0.5 पर सेट है। जब आप अब एंकरपॉइंट को 0,0.5 पर बदलते हैं तो दृश्य का केंद्र अब 0,50 पर अगली बार खींचा जाने पर कूदने का कारण बनता है। इससे बचने के लिए आपको एंकरपॉइंट को बदलने के बाद दृश्य के केंद्र को अपडेट करना होगा। मैं GMGridView आप वर्णित के भीतर जाँच की है:

case UIGestureRecognizerStateBegan: 
    { 
     [self transformingGestureDidBeginWithGesture:pinchGesture]; 

     _transformingItem.contentView.layer.anchorPoint = CGPointMake(0,0.5); 

     CGPoint orgCenter = _transformingItem.contentView.center; 
     orgCenter.x -= _transformingItem.contentView.frame.size.width/2.f; 

     [_transformingItem.contentView setCenter:orgCenter]; 
    } 
    break; 

मुझे आशा है कि यह आपके सवाल का जवाब।

0

यह सुनिश्चित नहीं है कि आपके कोड में कोई और gremlins अधिक देखे बिना हैं, लेकिन इस मुद्दे के संबंध में दो अच्छे पिछले Q & हैं।

first Q&A बस एंकर पॉइंट सेट करने से संबंधित है। मैंने इसे स्वयं करने की कोशिश की और यह ठीक काम करता है।

second Q&A एंकर पॉइंट्स और उनके रिश्ते के अनुसार उनके संबंधों के बारे में अधिक जानकारी में जाता है। यहां उदाहरण एंकर पॉइंट सेट करने से भी निपटते हैं।

गिथब here पर एंकर पॉइंट का उपयोग करके नमूना प्रोजेक्ट भी है।

मेरा सुझाव है कि आप दो Q & पर नमूना प्रोजेक्ट प्रोजेक्ट के रूप में देखें और उन सभी को अपने कोड के विरुद्ध तुलना करें। शायद कुछ आप पर उछाल जाएगा जो आपकी समस्या पैदा कर रहा है।

संबंधित मुद्दे