2013-08-25 3 views
6

मैं समझता हूं कि शीर्षक थोड़ा उलझन में है इसलिए मैं इसे अच्छी तरह से समझाने के लिए अपनी पूरी कोशिश करूंगा। मेरे पास एक UIView है जिसमें 100 की निश्चित चौड़ाई है, और एक परिवर्तनीय ऊंचाई जो 0 से शुरू होती है। मैं जो करना चाहता हूं वह मेरी उंगली को UIView के आधार से स्क्रीन के शीर्ष की ओर खींचता है, और UIView इसकी ऊंचाई बदलती है/मेरी उंगली की स्थिति में फैली हुई है। अगर यह अभी भी जटिल है तो बस कल्पना करें कि पेपर की एक पट्टी किसी चीज़ के नीचे से खींची जा रही है।उंगली खींचने के लिए UIView की ऊंचाई बदलना

यदि आप मदद कर सकते हैं, तो यह वास्तव में बहुत अच्छा होगा। मुझे नहीं लगता कि यह बहुत कठिन होना चाहिए, लेकिन मैं केवल एक नौसिखिया हूं और मैं समझ सकता हूं कि मैंने इसे अच्छी तरह से समझाया नहीं है!

+0

मैं हमेशा पूर्ण ऊंचाई को देखता हूं, लेकिन उस दृश्य के अंदर एक कैलियर है जो ऊंचाई में परिवर्तन करता है। –

+0

मैं ऐसा करने के बारे में कैसे जाऊं? – user2397282

+0

क्या आपने इशारा पहचानकर्ताओं को देखा है? – Wain

उत्तर

9

यह UIPanGestureRecognizer और थोड़ा गणित के साथ सीधे आगे होना चाहिए। सही फ्रेम (मैं नाम _viewToChange उपयोग कर रहा हूँ, इसलिए बाद में अपने दृश्य के साथ कि की जगह) के लिए दृश्य बदलने के लिए, बस जोड़ें:

UIPanGestureRecognizer * pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(pan:)]; 
pan.maximumNumberOfTouches = pan.minimumNumberOfTouches = 1; 
[self addGestureRecognizer:pan]; 

अपने init विधि के लिए सुपर देखने के लिए, और विधि को परिभाषित:

- (void)pan:(UIPanGestureRecognizer *)aPan; { 
    CGPoint currentPoint = [aPan locationInView:self]; 

    [UIView animateWithDuration:0.01f 
        animations:^{ 
        CGRect oldFrame = _viewToChange.frame; 
        _viewToChange.frame = CGRectMake(oldFrame.origin.x, currentPoint.y, oldFrame.size.width, ([UIScreen mainScreen].bounds.size.height - currentPoint.y)); 
        }]; 
} 

यह उपयोगकर्ताओं को उंगली चाल के रूप में देखने को एनिमेट करना चाहिए। उम्मीद है की वो मदद करदे!

+0

यह काम करता है, धन्यवाद! क्या आप जानते हैं कि मैं दृश्य की ऊंचाई पर अधिकतम और एक मिनट कैसे जोड़ सकता हूं? – user2397282

+0

इसके अलावा, एक और मामूली समस्या है। कोड काम करता है, लेकिन यह कोई फर्क नहीं पड़ता कि आप स्क्रीन को स्पर्श करते हैं। यह एक समस्या है क्योंकि मेरे पास इनमें से 3 होंगे। क्या कोई तरीका है कि आप इसे बदल सकते हैं ताकि जब आप इसे छू रहे हों तो यह केवल एक निश्चित दृश्य के लिए काम करता है? – user2397282

+0

अधिकतम और एक मिनट काफी आसान है। ध्यान दें कि एकमात्र बिंदु जो मायने रखता है 'currentPoint.y' है। यह सुनिश्चित करना कि 'currentPoint.y' कुछ अंतराल के भीतर है ('MAX' और' MIN' फ़ंक्शंस का उपयोग करके) आपको वांछित परिणाम देगा। दृश्य के रूप में आप इसे चुनना चाहते हैं, बस 'currentPoint.x' देखें, और यह पता लगाएं कि यह कहां है। यदि यह बाईं ओर है (1/3 स्क्रीन चौड़ाई से कम), तो पहले दृश्य का उपयोग करें। यदि यह बीच में है, तो दूसरे दृश्य का उपयोग करें, आदि – msgambel

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