Intereting Posts
UIAlertController का टिंट रंग कैसे बदल सकता है? मैं UITextField पाठ को कैसे खड़ी करता हूं? आईओएस के लिए आईओसी की सिफारिश की गई है? PopViewController अजीब व्यवहार आईओएस में, कैसे एक मॉडल को खारिज करने के लिए नीचे खींचें? कॉर्डोवा कैप्चर से बेस 64 का ऑडियो डेटा प्राप्त करें iphone / उद्देश्य सी – तुलना डबल्स काम नहीं कर रहा है डिकोडिंग एयरप्ले मिररिंग प्रोटोकॉल उद्देश्य- C ++ का नुकसान? आईओएस को एक सरल लिंक तत्व के लिए डबल-टैप की आवश्यकता है स्विफ्ट के साथ विशिष्ट छवि को कैसे लोड करें मैं UI स्वचालन उपकरण में "स्क्रिप्ट चलाने का प्रयास करते समय एक त्रुटि उत्पन्न हुई" देख रहा हूं। एक प्रोटोकॉल ऑपरेटर को वैश्विक फ़ंक्शन के रूप में क्यों लागू किया जाना चाहिए? क्लोजर ट्यूपल Xcode9 स्विफ्ट 4 में विध्वंस का समर्थन नहीं करता है कोर डेटा एन्क्रिप्शन

UIPageViewController स्वाइपिंग पर दिखाई देने वाले सफेद अंतर को रोकना

मैंने UIPageViewController इस तरीके से कार्यान्वित किया है:

Screenshot1

GalleryViewController : PageViewController का कंटेनर है

PageViewController : पृष्ठदृश्य नियंत्रक है जिसे मैं इसे GalleryViewController में एक सबव्यू के रूप में जोड़ा था।

PageContentViewController : मैं इसे UIImageView में पृष्ठ दृश्य नियंत्रक की सामग्री के लिए डाल दिया।

सब कुछ अच्छी तरह से चल रहा है, लेकिन जब मैं छवियों के बीच स्वाइप करता हूं, अजीब चीजें होती हैं। सफेद अंतर दिखाई देता है ऊपर की ओर।

सफेद अंतर

अजीब बात यह है कि जब मैं इसे स्क्रॉल करना समाप्त करता हूँ तो यह स्वचालित रूप से फैला रहता है

पूर्ण स्क्रीन

यह GalleryViewController का कोड है, जो PageViewController का कंटेनर है:

 import UIKit class PageViewController: UIViewController, UIPageViewControllerDataSource, UIPageViewControllerDelegate { var startIndex:Int = 0 var pageViewController : UIPageViewController! override func viewDidLoad() { self.navigationController?.hidesBarsOnTap = true; reset() } func reset() { /* Getting the page View controller */ pageViewController = self.storyboard?.instantiateViewControllerWithIdentifier("PageViewController") as UIPageViewController self.pageViewController.dataSource = self let pageContentViewController = self.viewControllerAtIndex(0) self.pageViewController.setViewControllers([pageContentViewController!], direction: UIPageViewControllerNavigationDirection.Forward, animated: true, completion: nil) self.pageViewController.view.frame = CGRectMake(0, 0, self.view.frame.width, self.view.frame.height) self.addChildViewController(pageViewController) self.view.addSubview(pageViewController.view) self.pageViewController.didMoveToParentViewController(self) println("\(startIndex) start index") } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController? { var index = (viewController as PageContentViewController).pageIndex! index++ if(index >= Constants.Statics.images.count){ return nil } return self.viewControllerAtIndex(index) } func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? { var index = (viewController as PageContentViewController).pageIndex! if(index <= 0){ return nil } index-- return self.viewControllerAtIndex(index) } func viewControllerAtIndex(index : Int) -> UIViewController? { if((Constants.Statics.images.count == 0) || (index >= Constants.Statics.images.count)) { return nil } let pageContentViewController = self.storyboard?.instantiateViewControllerWithIdentifier("PageContentViewController") as PageContentViewController pageContentViewController.pageIndex = index return pageContentViewController } } 

स्विपिंग पर उस खींचने और सफेद अंतर को रोकने के लिए मैं क्या कर सकता हूँ?

अपडेट:

एक अजीब बात हो गई है, मैंने PageViewController संक्रमण शैली को Page Curl बदल दिया है, समस्या दिखाई नहीं दे रही है लगता है जैसे यह स्क्रॉल करना है!

Solutions Collecting From Web of "UIPageViewController स्वाइपिंग पर दिखाई देने वाले सफेद अंतर को रोकना"

बग की उत्पत्ति आपके UIImageView की बाधा है।

जब आप स्क्रॉल शुरू करते हैं, तो केवल वेल्यूपपर को ही देखा जाता है, और स्क्रॉल समाप्त होने पर ऑटोलेआउट की गणना नहीं की जाती है, और दृश्य दिखाया गया है, दृश्य प्रारंभिकता की गणना करता है, और देखने के बाद ऑडलयेआउट पूरा हो जाने के बाद डिडएपियर होता है।

आप यह देख सकते हैं कि नीचे PageContentViewController में कोड जोड़कर

  override func viewDidLoad() { super.viewDidLoad() imageView.image = UIImage(named: "UpcomingGamesBg") println("viewDidLoad imageView Frame : \(imageView.frame) pageIndex : \(pageIndex)") } override func viewWillAppear(animated: Bool) { super.viewWillAppear(animated) println("viewWillAppear imageView Frame : \(imageView.frame) pageIndex : \(pageIndex)") } override func viewDidAppear(animated: Bool) { super.viewDidAppear(animated) println("viewDidAppear imageView Frame : \(imageView.frame) pageIndex : \(pageIndex)") } 

और क्योंकि, आपके छवि का लेआउट शीर्ष लेआउट मार्गदर्शिका का संदर्भ लेता है, और शीर्ष लेआउट मार्गदर्शिका में ऑटोलेआउट की गणना करने से पहले और बाद में अलग-अलग मान हो सकते हैं, आपके पास यह बग है।

इसलिए इसे हल करने के लिए, आप अपनी छवि दृश्य की बाधाओं को बदल सकते हैं और उन्हें रिश्तेदारों को माता-पिता के दृश्य में बदल सकते हैं (क्योंकि पेज कंटेंट वीक्यू कंट्रोलर एक सबव्यू की तरह है और पेजर दृश्य नियंत्रक शीर्ष और नीचे हाशिए का प्रबंधन करेगा), जैसे:

यहां छवि विवरण दर्ज करें

यहां छवि विवरण दर्ज करेंयहां छवि विवरण दर्ज करें

इसके साथ आप इस बग को ठीक कर सकते हैं, लेकिन सावधान रहें कि आपको अपने पेज में कुछ कंटेंट्स जोड़ना चाहिए ViewController.view

अद्यतन करें

उदाहरण के लिए नेविगेशनबार / टैबबार का समर्थन करने के लिए, आपको view.addSubview(pageViewController.view) में कुछ बाधाएं जोड़ना चाहिए view.addSubview(pageViewController.view) बाद):

  pageViewController.view.setTranslatesAutoresizingMaskIntoConstraints(false) let topConstraint = NSLayoutConstraint(item: pageViewController.view, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem: topLayoutGuide, attribute: NSLayoutAttribute.Bottom, multiplier: 1.0, constant: 0) let bottomConstaint = NSLayoutConstraint(item: pageViewController.view, attribute: NSLayoutAttribute.Bottom, relatedBy: NSLayoutRelation.Equal, toItem: bottomLayoutGuide, attribute: NSLayoutAttribute.Top, multiplier: 1.0, constant: 0) let leadingConstraint = NSLayoutConstraint(item: pageViewController.view, attribute: NSLayoutAttribute.Leading, relatedBy: NSLayoutRelation.Equal, toItem: view, attribute: NSLayoutAttribute.Leading, multiplier: 1.0, constant: 0) let trailingConstraint = NSLayoutConstraint(item: pageViewController.view, attribute: NSLayoutAttribute.Trailing, relatedBy: NSLayoutRelation.Equal, toItem: view, attribute: NSLayoutAttribute.Trailing, multiplier: 1.0, constant: 0) view.addConstraints([topConstraint, bottomConstaint, leadingConstraint, trailingConstraint]) 

सादर,

निश्चित रूप से उदाहरण यहां देखें: https://github.com/dimpiax/UIPageViewControllerScrolling

लेकिन अगर आप स्वाइप खाली रिक्त खाली करना चाहते हैं, तो आप उछाल हटा सकते हैं, उदाहरण के लिए:

 for value in view.subviews { if let scrollView = value as? UIScrollView { scrollView.bounces = false } } 

ऑटो खींचने का कारण यह है कि ImageView इंस्टेंस पहलू फिट के लिए विवश नहीं हैं। अपने PageContentViewController , समस्या को ठीक करने के लिए अपनी छवियों के लिए contentMode मान निर्दिष्ट करें। उदाहरण के लिए:

 self.imageView.contentMode = UIViewContentModeScaleAspectFit 

तो ऐसा प्रतीत होता है कि एनीमेशन होने से पहले दृश्य का फ्रेम सही नहीं है। स्क्रीन पर आने से पहले फ्रेम की स्थापना करने का प्रयास करें कुछ इस तरह:

 func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? { var index = (viewController as PageContentViewController).pageIndex! if(index <= 0){ return nil } index-- // Setting up the new view's frame var newVC = self.viewControllerAtIndex(index) newVC.view.frame = self.pageViewController.view.bounds return newVC } 

क्या आपने उन लोगों की कोशिश की है? आपको पहले अपनी सामग्री दृश्य नियंत्रक का चयन करना चाहिए। नोट: नियंत्रक पर क्लिक करें, दृश्य नहीं

  1. स्क्रॉल व्यू इनसेट को समायोजित करें को अनचेक करें
  2. टॉप बार्स के तहत अनचेक करें
  3. निचले बार्स के नीचे अनचेक करें

यहां छवि विवरण दर्ज करें

एक लेआउट समस्या की तरह देखो

चूंकि UIPageViewController साथ। .Scroll प्रकार इसे बनाने के लिए UIScrollView का उपयोग करते हैं,

self.automaticallyAdjustsScrollViewInsets = false को जोड़ने का प्रयास करें। self.automaticallyAdjustsScrollViewInsets = false आपके self.automaticallyAdjustsScrollViewInsets = false

यदि यह काम नहीं करता है, तो self.navigationController?.hidesBarsOnTap = true को हटाने का प्रयास करें self.navigationController?.hidesBarsOnTap = true

और अगर यह फिर से काम नहीं करता है, तो कृपया एक डेमो प्रोजेक्ट प्रदान करें, इसलिए मैं समझ सकता हूँ कि क्या गलत है।

ImageView की सामग्री को सेट करने के लिए AspectFill …