2016-08-31 9 views
6

वर्तमान में, मैं एक छवि के लिए एक धुंध लागू करने के लिए एक UIVisualEffectView का उपयोग कर रहा हूँ।आईओएस में खींचते समय UIVisualEffectView की धुंध कैसे संशोधित की जा सकती है?

मेरे पास एक UIScrollView है। जैसा कि मैं scrollView पर नीचे खींचता हूं, मेरी "scrollViewDidScroll" विधि में, मैं UIVisualEffectView के अल्फा को बदल रहा हूं। इसका वर्तमान व्यवहार यह है कि धुंध त्रिज्या आसानी से बदलता है क्योंकि मैं दृश्य में चारों ओर खींचता हूं।

समस्या यह है कि, मुझे यह नहीं करना चाहिए। UIVisualEffectView के अल्फा मान को बदलने के बारे में चेतावनियां प्राप्त करना।

मैंने देखा है लोगों को एक एनीमेशन का उपयोग कर धुंधला, यहां इस तरह की सुचारु करने के लिए कहते हैं: How to fade a UIVisualEffectView and/or UIBlurEffect in and out?

हालांकि, मैं कुछ भी है कि मुझे इस दौरान करने की अनुमति देता नहीं देखा है, एक पैन का कहना है इशारा या कुछ। मेरा मतलब है, अगर मैंने एक समय की राशि के साथ एक एनीमेशन स्थापित किया है, तो सब अच्छा है। लेकिन एक ड्रैग के दौरान यह कर रहे हैं?

उत्तर

7
वहाँ

एक तरह से :) है

आपने ध्यान दिया होगा, तो आप एक nil प्रभाव से UIBlurEffectStyleDark की तरह एक प्रभाव को चेतन कर सकते हैं हम एक एनीमेशन जोड़ सकते हैं ताकि अगर और फिर परत के एनीमेशन का थामने हम की प्रगति को नियंत्रित कर सकते परत timeOffset समायोजित करके प्रभाव!

- (void) setupBlur { 
    // Setup the blur to start with no effect 
    self.blurredEffectView = [[UIVisualEffectView alloc] initWithEffect:nil]; 

    // Add animation to desired blur effect 
    [UIView animateWithDuration:1.0 animations:^{ 
     [self.blurredEffectView setEffect:[UIBlurEffect effectWithStyle:UIBlurEffectStyleDark]]; 
    }]; 

    // Pause layer animations 
    self.blurredEffectView.layer.speed = 0; 
} 

0,0 और 1.0 (एनिमेशन की अवधि) के बीच कलंक समायोजित करें:

- (void) adjustBlur:(CGFloat)blurIntensity { 
    self.blurredEffectView.layer.timeOffset = blurIntensity; 
} 
  • नोट: इस iOS 8 जहां UIBlurEffect एनिमेशन समर्थित नहीं हैं पर काम नहीं करेगा।
+1

इसके लिए धन्यवाद। ये वही है जिसे मैं ढूंढ रहा था! –

+1

: डी एक अतिरिक्त नोट: कभी-कभी ऐसा लगता है कि एनीमेशन तब तक काम नहीं करेगा जब तक 'UIVisualEffectView' सबव्यू दृश्य पदानुक्रम में जोड़ा जाता है। मैं आमतौर पर 'viewDidLoad' में धुंध को तुरंत जोड़ता हूं और' viewDidAppear: 'में एनीमेशन जोड़ता हूं। – Warpling

+0

मैं स्विफ्ट में एक ही विधि का उपयोग कर रहा हूँ। हालांकि, एक बग है - जब ऐप पृष्ठभूमि में जाता है, और फिर वापस आता है, तो एनीमेशन स्वचालित रूप से अपने अंत स्थिति तक पहुंच जाता है और अब एनिमेट नहीं करता है। क्या आप लोग उस मुद्दे के आसपास आए हैं? क्या आपको पता है कि उसके आसपास कैसे काम करना है? – suntime

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