2011-01-02 12 views
24

ऐप्पल के आईपॉड (संगीत) ऐप में एक स्लाइडर (यूआईस्लाइडर, मुझे लगता है) परिवर्तनीय स्क्रबिंग गति के साथ है: स्लाइडर से आगे आप लंबवत खींचते हैं, आपके क्षैतिज के अनुपात को छोटा स्लाइडर के मूल्य परिवर्तन में दिखाई देने वाली गति खींचना। क्या किसी ने यह समझ लिया है कि इस व्यवहार को कैसे डुप्लिकेट करना है?परिवर्तनीय स्क्रबिंग गति (जैसे आईपॉड ऐप) के साथ यूआईस्लाइडर

उत्तर

31

अच्छा सवाल है कि मुझे समाधान खोजने के लिए प्रेरित किया। मैंने OBSlider नामक एक क्लास बनाई है जो परिवर्तनीय स्क्रबिंग गति का समर्थन करती है।

संक्षेप में समाधान: उपclass UISlider, -continueTrackingWithTouch:withEvent: ओवरराइड करें और स्वयं को स्पर्श करने के आंदोलन के आधार पर self.value के परिवर्तन की गणना करें। इस प्रकार, आप उस कारक को स्वतंत्र रूप से प्रभावित कर सकते हैं जिसके साथ आप नए स्लाइडर वैल्यू पर पहुंचने के लिए स्पर्श आंदोलन को गुणा करना चाहते हैं।

विवरण के लिए, कृपया मेरे ब्लॉग पोस्ट को पढ़ें: OBSlider, a UISlider subclass with variable scrubbing speed

+0

बहुत अच्छा। यह काफी नहीं करता है कि आईपॉड ऐप स्लाइडर क्या करता है - ध्यान दें कि, यदि आप आइपॉड ऐप स्क्रबर से दूरी पर खींच रहे हैं और आप स्लाइडर की ओर ऊपर की तरफ खींचते रहें, तब तक अंगूठे आपको स्लाइडर पर मिलने तक आपकी ओर बढ़ती है। हालांकि, आपने निश्चित रूप से दिखाया है कि मूल्य क्या हैं जिन्हें छेड़छाड़ करने की आवश्यकता है, और यही वह है जो मुझे काम करने में परेशानी हो रही थी। (मैं भी 'जारी रखने वाला थाथिंग विथ टच: साथ:' 'और' self.value' 'सेटिंग को ओवरराइड कर रहा था, लेकिन मुझे सही व्यवहार नहीं मिल रहा था।) – matt

+0

@matt: हाँ, मैंने देखा। मुझे यकीन नहीं है कि मुझे आइपॉड के व्यवहार को बेहतर पसंद है, हालांकि। –

+0

@matt: मैंने कोड बदल दिया है, इसलिए यह आईपॉड ऐप में स्लाइडर की तरह व्यवहार करता है। –

4

अच्छा काम ओले! मैंने यूआईस्लाइडर के करीब उंगली को स्लाइड करते समय आईपॉड ऐप स्लाइडर के कामकाज के तरीके के समान कुछ और प्राप्त करने के लिए कुछ मामूली संशोधन किए हैं! असल में मैं उंगली की स्थिति से संबंधित मान को ट्रैक करने के लिए एक चर को संभालता हूं, और यदि उपयोगकर्ता नज़दीक हो रहा है, तो मैं एक अलग सूत्र लागू करता हूं (जो सही नहीं है और इसमें बहुत सुधार किया जा सकता है)।

मेरा कांटा यहां उपलब्ध है: http://github.com/sylverb/OBSlider

+0

@Sylverb: मैंने एक पल पहले तक आपका जवाब नहीं देखा और मैंने इसे अपने आप में कुछ बदलाव किए ताकि इसे आइपॉड की तरह व्यवहार किया जा सके। अब आपके परिवर्तनों की समीक्षा करेंगे, शायद आप मेरा ध्यान देखना चाहते हैं। –

+1

@ ओले बेगमैन: यह अभी भी आईपॉड प्लेयर स्लाइडर से काफी अलग दिखता है: - स्थिति संशोधन केवल तभी होता है जब उपयोगकर्ता स्लाइडर के करीब हो रहा हो। आपके कार्यान्वयन में, संशोधन तब होता है जब y समन्वय बदलता है - स्लाइडर संशोधन स्क्रबिंग का पालन करना प्रतीत होता है स्पीड चरणों की बजाय रैखिक कदम! मेरे संशोधन अभी तक सही नहीं हैं (वाई समन्वय के प्रभाव को एकीकृत करने के लिए सूत्र सही नहीं है), लेकिन यह एक आइपॉड प्लेयर में एक जैसा व्यवहार है! – Sylverb

+0

आप सही हैं, स्लाइडर से दूर खींचते समय मुझे मूल्य नहीं बदलना चाहिए। –

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