2010-08-19 11 views
11

आईफोन के लिए स्काइप ऐप एनिमेटेड टैबबार आइकन का उपयोग करता है। उदाहरण के लिए, लॉगिंग के दौरान-दाएं टैब आइकन में तीर फैलाने वाला दिखाता है। "कॉल" टैब आइकन को कॉल करते समय धीरे-धीरे ब्लिंक जो एनीमेशन के माध्यम से स्पष्ट रूप से किया जाता है।UITabBarItem आइकन एनीमेशन

मुझे आश्चर्य है कि टैब बार आइटम आइकन को एनिमेट करना कैसा है।

मेरे विशेष मामले में जब उपयोगकर्ता 'पसंदीदा' बटन दबाता है तो यह 'पसंदीदा' टैब बार आइटम पर कूदता है। मैंने पहले ही कूद एनीमेशन लागू कर लिया है, लेकिन मैं एनीमेशन के अंत में संबंधित टैब बार आइकन को पूर्णता की भावना लाने के लिए झपकी देना चाहता हूं।

मुझे जिस दिशा में देखना चाहिए, उसके बारे में कोई सुझाव?

अग्रिम धन्यवाद।

+0

आप कैसे कूद एनीमेशन लागू किया में प्रत्येक UITabBarItem के लिए टैग को निर्दिष्ट करें? –

+0

मुझे पसंद है [RAMAnimatedTabBarController] (https: // cocoapods।संगठन/फोड/RAMAnimatedTabBarController) –

उत्तर

11

मैं हैरान हूं कितना आसान समाधान हो गया था!

जोड़ें विधि अपने आवेदन प्रतिनिधि वर्ग मीटर-फाइल करने के लिए (या किसी अन्य वर्ग है कि आपके UITabBar का प्रबंधन) दिनचर्या निम्नलिखित युक्त

  1. एक UIImageView है कि एनीमेशन के लिए इस्तेमाल किया जाएगा बनाएँ।
  2. addSubview: विधि का उपयोग करके इसे अपने टैबबार दृश्य में जोड़ें।
  3. इसे UITabBarItem के आकार में फ्रेम करें (UITabBar फ्रेम आकार का उपयोग करें और फ्रेम आकार की गणना करने के लिए टैब बार आइटमों की संख्या का उपयोग करें)।
  4. छवि दृश्य को समायोजित करने के लिए छवि दृश्य को frame.origin.x मान समायोजित करें जिसे आप टैब बैट आइटम के ऊपर दाएं रखना चाहते हैं।
  5. एनीमेशन जोड़ें जिसे आप छवि देखना चाहते हैं (आप अस्पष्टता के साथ खेल सकते हैं, कई छवियों को स्वैप कर सकते हैं - जो भी आप चाहते हैं)।

बहुत आसान, क्या आपको ऐसा नहीं लगता?

आप इस विधि को यूआईपीप्लिकेशन डिलेगेट इंस्टेंस पर कहीं भी कॉल कर सकते हैं जहां आपको टैब बार आइटम को एनिमेट करने की आवश्यकता है।

यह भी ध्यान रखना महत्वपूर्ण है कि आप टैब बार आइटम का चयन करने के लिए छवि दृश्य के माध्यम से टैप कर सकते हैं जैसे टैब बार पर कोई छवि नहीं थी। कई दिलचस्प निष्कर्ष यदि आप इसे पता है कि तुम क्या कर सकते हैं पर यहाँ किया जा सकता है ...

+0

यह यूआईटीएबीबार की गतिशील चौड़ाई के साथ काम नहीं करेगा। –

0

मैंने ऐसा नहीं किया है, लेकिन मैं केवल CAAnimation बनाने का प्रयास करूंगा। एक CABasicAnimation के साथ और इसे UITabBarItem में जोड़ें जिसे आप एनिमेटेड बनाना चाहते हैं।

कैसे एक CABasicAnimation स्थापित करने के लिए कोर एनिमेशन प्रोग्रामिंग गाइड देखें के बारे में जानकारी के लिए: http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/CoreAnimation_guide/Articles/AnimatingLayers.html#//apple_ref/doc/uid/TP40006085-SW1

+0

नहीं, मुझे यकीन है कि यह काम नहीं करेगा क्योंकि UITabBarItem एक प्रकार का विचार नहीं है - यह एनएसओबीजेस्ट (मूल वर्ग) और UIBarItem से निकलता है (वहां कुछ भी दिलचस्प नहीं है)। ऐसा लगता है कि खेलने के लिए कोई परत या फ्रेम भी नहीं है। लेकिन मैंने 'पिछवाड़े' दर्ज करके इस समस्या को हल करने में कामयाब रहा है। विचार के लिए धन्यवाद हालांकि –

0

आप, अपने दृश्य हो रही द्वारा tabbar प्रतीक चेतन कर सकते हैं तो के रूप में जो कुछ भी एनीमेशन करना आप UIView के लिए पसंद है। स्केल ट्रांसफॉर्म के साथ नीचे एक सरल उदाहरण है, जयकार!

func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem){ 
     var tabBarView: [UIView] = [] 

     for i in tabBar.subviews { 
      if i.isKind(of: NSClassFromString("UITabBarButton")!) { 
       tabBarView.append(i) 
      } 
     } 

     if !tabBarView.isEmpty { 
      UIView.animate(withDuration: 0.15, animations: { 
       tabBarView[item.tag].transform = CGAffineTransform(scaleX: 1.2, y: 1.2) 
      }, completion: { _ in 
       UIView.animate(withDuration: 0.15) { 
        tabBarView[item.tag].transform = CGAffineTransform.identity 
       } 
      }) 
     } 
    } 

ps: आदेश

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