2015-07-06 3 views
18

मेरी समस्या को समझाने से पहले, यह कहना महत्वपूर्ण है कि मैंने this question में किए गए सुझाव को पहले से ही लागू किया है और मुझे लगता है कि इस विधि के बारे में मेरे संदेह काफी अलग हैं, दोनों प्रश्नों के समान ही शीर्षक हैं।UIView.animateWithDuration?

तो, मैं एक स्विफ्ट नौसिखिया हूं और मैं स्विफ्ट में कुछ छोटी परियोजनाएं कर रहा हूं, जो पिछले उद्देश्य सी डेमो के आधार पर मैंने पहले किया था।

यह मेरा उद्देश्य सी कोड है:

- (void)moveSideBarToXposition: (int) iXposition{ 

    [UIView animateWithDuration:0.5f 
          delay:0.1 
         options: UIViewAnimationOptionTransitionNone 
        animations:^{ self.mainView.frame = CGRectMake(iXposition, 20, self.mainView.frame.size.width, self.mainView.frame.size.height); } 

        completion:^(BOOL finished){ 
         if (self.isSidebarHidden==YES) { 
          self.isSidebarHidden = NO; 
         } 

         else{ 
          self.isSidebarHidden = YES; 
         } 
        }]; 
} 

और ये मेरे स्विफ्ट संस्करण है:

func moveSideBarToXposition(iXposition: Float) { 

    UIView.animateWithDuration(0.5, delay: 1.0, options: UIViewAnimationTransition.None, animations: {() -> Void in 

     self.contentView.frame = CGRectMake(iXposition, 20, self.contentView.frame.size.width, self.contentView.frame.size.height) 

    }, completion: { (finished: Bool) -> Void in 

     if isMenuHidden == true { 
      isMenuHidden = false 
     } else { 
      isMenuHidden = true 
     } 
    }) 
} 

और मैं इस त्रुटि मिलती है।

प्रकार का एक तर्क सूची के साथ 'animateWithDuration' आह्वान नहीं किया जा सकता '(डबल, देरी: डबल, विकल्प: UIViewAnimationTransition, एनिमेशन:() -> शून्य, पूरा होने के: (Bool) -> शून्य)'

मैंने प्रलेखन पढ़ा लेकिन वास्तव में मुझे यकीन नहीं है कि समस्या क्या है।

Btw, मैं Xcode 7 और स्विफ्ट 2.0

उत्तर

32

आप एक तर्क जो टाइप UIViewAnimationOptions (options तर्क)

यहाँ सही enum साथ सही सिंटैक्स है की आवश्यकता के लिए प्रकार UIViewAnimationTransition की enum गुजर रहे हैं पर काम कर रहा हूँ मूल्य:

func moveSideBarToXposition(iXposition: Float) { 
    let convertedXposition = CGFloat(iXposition) 
    UIView.animateWithDuration(0.5, delay: 1.0, options: UIViewAnimationOptions.TransitionNone, animations: {() -> Void in 

     self.contentView.frame = CGRectMake(convertedXposition, 20, self.contentView.frame.size.width, self.contentView.frame.size.height) 

     }, completion: { (finished: Bool) -> Void in 

      // you can do this in a shorter, more concise way by setting the value to its opposite, NOT value 
      isMenuHidden = !isMenuHidden 
    }) 
} 
+0

हाय! आपके जवाब के लिए धन्यवाद। वास्तव में, आप सही हैं। (मेरा बुरा, मुझे UIViewAnimationTransition.None और UIViewAnimationOptions.TransitionNone के बीच का अंतर नहीं पता था)। मैंने उस रेखा को सही किया लेकिन मुझे अभी भी एक ही समस्या है। मैंने अभी इस लाइन को हटा दिया है (self.contentView.frame = CGRectMake (iXposition, 20.0, self.contentView.frame.size.width, self.contentView.frame.size.height) ) और यह सब काम किया। लेकिन जब मैं इसे वापस रखता हूं, तो मुझे वही त्रुटि मिलती है जिसका मैंने पहले उल्लेख किया था। क्या आपका कोई सुझाव है? मैं बहुत मददगार होगा – Jadekin

+0

आपके द्वारा डाली गई लाइन के साथ जो त्रुटि हो रही है, वह वास्तव में मुझे समझ में नहीं आता है, लेकिन समस्या यह है कि आपकी विधि 'moveSidebarToXposition'' फ़्लोट 'प्रकार का तर्क लेती है जिसे आप' CGRect' , जिसके लिए 'CGFloat' प्रकार की आवश्यकता होती है। तो आपको इसे इस तरह से परिवर्तित करने की आवश्यकता है: 'कन्वर्ट एक्सपोजिशन = CGFloat (iXPosition)' और 'CGRect' निर्माण – imas145

+0

में 'convertXposition' का उपयोग करें) कृपया मेरा अपडेट किया गया जवाब – imas145

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