2016-12-01 29 views
5

में स्थिति बार को गतिशील रूप से छुपाते समय अंतराल/स्क्रीन फ्रीज करता है मैं वर्तमान में Scroll View का उपयोग विभिन्न पृष्ठों के साथ कर रहा हूं। मैं एक विशिष्ट पृष्ठ पर Status Bar को छिपाने का लक्ष्य रख रहा हूं। वास्तव में अंतराल और स्क्रीन हर बार Status Bar फिर से प्रकट/गायब होने वाला है।स्क्रॉल व्यू (स्विफ्ट 3)

सबसे पहले मैं परिभाषित दो चर

private var currentPage = 0 

private var isStatusBarPreferablyHidden = true 

मैं तो स्क्रॉल देखें प्रतिनिधि से दो कार्यों के लिए इस्तेमाल किया setNeedsStatusBarAppearanceUpdate कॉल करने के लिए उपयोगकर्ता पहले पृष्ठ

को स्वाइप जब:

यह मेरा दृष्टिकोण है

func scrollViewDidScroll(_ scrollView: UIScrollView) { 

    let currentScrollPosition : CGFloat = self.navigation.contentOffset.x/self.navigation.frame.size.width 
    currentPage = lroundf(Float(currentScrollPosition)) 
} 

func scrollViewWillBeginDecelerating(_ scrollView: UIScrollView) { 

    if currentPage == 0 { 

     isStatusBarPreferablyHidden = true 
    } else { 

     isStatusBarPreferablyHidden = false 
    } 

    self.setNeedsStatusBarAppearanceUpdate() 
} 

अंत में मैं स्टेटस बार की उपस्थिति को अपडेट करने के लिए स्टेटस बार फ़ंक्शंस को ओवरराइड करता हूं।

override var prefersStatusBarHidden: Bool { 

    return isStatusBarPreferablyHidden 
} 

override var preferredStatusBarUpdateAnimation: UIStatusBarAnimation { 

    return UIStatusBarAnimation.none 
} 

उत्तर

0

scrollViewWillBeginDecelerating हटाएं। आज़माएं:

func scrollViewDidScroll(_ scrollView: UIScrollView) { 
    let currentScrollPosition : CGFloat = scrollView.contentOffset.x/scrollView.frame.size.width 
    let page = lroundf(Float(currentScrollPosition)) 
    if page != currentPage { 
     currentPage = page 
     if currentPage == 0 { 
      isStatusBarPreferablyHidden = true 
     } else { 
      isStatusBarPreferablyHidden = false 
     } 
     self.setNeedsStatusBarAppearanceUpdate() 
    } 
} 
+0

यह कुछ भी नहीं बदलेगा! वही लग रहा है, उचित रूप से भी काम नहीं कर रहा है। मुझे खेद है लेकिन यह जवाब कुछ हल नहीं करता है-.- – Devapploper

+0

@ डेवप्लपर आप अंतराल से क्या मतलब है। मैं आपके कोड का परीक्षण करता हूं। मैं 'scrollViewWillBeginDragging' में बदल जाने के बाद यह ठीक हो जाता है। –

+0

जब भी स्टेटसबार बदलने वाला है, स्क्रॉल व्यू और अन्य सभी चीजें लगभग 1/2 सेसेंड के लिए जमा हो जाती हैं। यह प्रयुक्त प्रतिनिधि विधि – Devapploper