6

मैं छवियों को पूर्ण स्क्रीन दिखाने के लिए UIPageViewController का उपयोग कर रहा हूं। समस्या यह है कि छवियां पूर्ण स्क्रीन नहीं दिखा रही हैं। इसके बजाय छवि और पृष्ठ नियंत्रण दृश्य बिंदुओं और शीर्ष पर के बीच के नीचे एक अंतर है। मेरे पास UIViewController है जो UIPageController में उप दृश्य/बच्चे के रूप में जोड़ा गया है और ViewController छवियों का उपयोग करके छवियों को दिखाया जा रहा है। मैं इसे तेजी से/स्टोरीबोर्ड में करने की कोशिश कर रहा हूं।दृश्य नियंत्रक/पृष्ठ दृश्य नियंत्रक (स्विफ्ट) में छवि दृश्य पूर्ण स्क्रीन बनाएं

मैं स्टोरीबोर्ड में "कोई नहीं" के लिए शीर्ष बार और निचला बार विकल्प बदल रहा हूं, लेकिन यह काम नहीं करता है।

छवि पूर्वावलोकन:

enter image description here

ChildViewControllerCode:

class BoatContentViewController: UIViewController { 

@IBOutlet weak var imageView: UIImageView! 
@IBOutlet weak var titleLabel: UILabel! 


var pageIndex: Int! 
var titleText: String! 
var imageFile: String! 


override func viewDidLoad() { 
    super.viewDidLoad() 

    self.imageView.image = UIImage(named: self.imageFile) 
    self.titleLabel.text = self.titleText 


    // Do any additional setup after loading the view. 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

mainViewControllerCode:

class BoatViewController: UIViewController, UIPageViewControllerDataSource { 
@IBOutlet weak var loginButton: UIButton! 
@IBOutlet weak var skipButton: UIButton! 

var pageViewController: UIPageViewController! 
var pageTitles: NSArray! 
var pageImages: NSArray! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    loginButton.backgroundColor = UIColor.clearColor() 
    loginButton.layer.cornerRadius = 5 
    loginButton.layer.borderWidth = 1 
    loginButton.layer.borderColor = UIColor.purpleColor().CGColor 


    skipButton.backgroundColor = UIColor.whiteColor() 
    skipButton.layer.cornerRadius = 5 
    skipButton.layer.borderWidth = 1 
    skipButton.layer.borderColor = UIColor.whiteColor().CGColor 


    self.pageTitles = NSArray(objects: "", "", "", "", "") 
    self.pageImages = NSArray(objects: "onboarding1", "onboarding2", "onboarding3", "onboarding4", "onboarding5") 
    self.pageViewController = self.storyboard?.instantiateViewControllerWithIdentifier("BoatPageViewController") as! UIPageViewController 
    self.pageViewController.dataSource = self 
    var startVC = self.viewControllerAtIndex(0) as BoatContentViewController 
    var viewControllers = NSArray(object: startVC) 
    self.pageViewController.setViewControllers(viewControllers as [AnyObject], direction: .Forward, animated: true, completion: nil) 
    self.pageViewController.view.frame = CGRectMake(0, 30, self.view.frame.width, self.view.frame.size.height - 60) 
    self.addChildViewController(self.pageViewController) 
    self.view.addSubview(self.pageViewController.view) 
    self.pageViewController.didMoveToParentViewController(self) 

    // Do any additional setup after loading the view. 
} 

func viewControllerAtIndex(index: Int) -> BoatContentViewController { 

    if ((self.pageTitles.count == 0) || (index >= self.pageTitles.count)) { 

     return BoatContentViewController() 

    } 


    var vc: BoatContentViewController = self.storyboard?.instantiateViewControllerWithIdentifier("BoatContentViewController") as! BoatContentViewController 

    vc.imageFile = self.pageImages[index] as! String 

    vc.titleText = self.pageTitles[index]as! String 

    vc.pageIndex = index 

    return vc 
} 

func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? 

{ 

    var vc = viewController as! BoatContentViewController 

    var index = vc.pageIndex as Int 

    if (index == 0 || index == NSNotFound) 

    { 
     return nil 

    } 

    index-- 

    return self.viewControllerAtIndex(index) 

} 



func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController? { 

    var vc = viewController as! BoatContentViewController 

    var index = vc.pageIndex as Int 

    if (index == NSNotFound) { 
     return nil 
    } 

    index++ 

    if (index == self.pageTitles.count) { 
     return nil 
    } 

    return self.viewControllerAtIndex(index) 

} 

func presentationCountForPageViewController(pageViewController: UIPageViewController) -> Int { 
    return self.pageTitles.count 
} 


func presentationIndexForPageViewController(pageViewController: UIPageViewController) -> Int { 
    return 0 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

अनुप्रयोग प्रतिनिधि:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
    // Override point for customization after application launch. 



    var pageControl = UIPageControl.appearance() 

    pageControl.pageIndicatorTintColor = UIColor.lightGrayColor() 

    pageControl.currentPageIndicatorTintColor = UIColor.blackColor() 

    pageControl.backgroundColor = UIColor.clearColor() 



    return true 
} 
+0

जांच यह पता http://stackoverflow.com/questions/21045630/how-to-put-the-uipagecontrol-element-on-top -of-the-sliding-pages-in-a-uipage –

+0

यह मेरे लिए सहायक था [UIPageViewController UIImage पूर्ण स्क्रीन नहीं दिखा रहा है] (http://stackoverflow.com/questions/28732972/uipageviewcontroller-uiimage-not-showing- पूर्ण स्क्रीन) –

उत्तर

2

UIPageViewController का एक दृश्य है, जिसमें इसके पृष्ठ दिखाई देंगे। वे पृष्ठ उस दृश्य से बड़े नहीं हो सकते हैं - दूसरे शब्दों में, वे पृष्ठ दृश्य नियंत्रक के अंदर हैं।

आपका यूआईपीएज व्यू कंट्रोलर का दृश्य स्क्रीन से छोटा है - यह पृष्ठ नियंत्रण और बटन के लिए कमरे में और एनएवी बार के लिए शीर्ष पर देता है। आप स्वयं इसे सत्य बना रहे हैं:

self.pageViewController.view.frame = 
    CGRectMake(0, 30, self.view.frame.width, self.view.frame.size.height - 60) 

आपने शीर्ष पर 30 अंक अंतर और नीचे 30 अंक अंतर की अनुमति दी है। इस प्रकार, यह प्रदर्शित छवियों से कभी भी बड़ा नहीं हो सकता है। वे कभी भी "पूर्ण स्क्रीन" नहीं हो सकते हैं।

+0

ऐसा कुछ नहीं कर सकता है? https://s-media-cache-ak0.pinimg.com/736x/a3/84/cd/a384cd83b85c64a175503c3ee9baa5d3.jpg –

+0

जाहिर है हाँ, आप कर सकते हैं। लेकिन यह वह नहीं है जिसे आपने पूछा था। आपने पूछा क्यों _you_ ऐसा नहीं कर रहे थे। और मैंने तुमसे कहा क्यों। - मेरे उत्तर में थोड़ी अधिक जानकारी जोड़ी गई, आपको दिखाती है कि आप अपने आप को स्क्रीन से छवियों को छोटे से कैसे बना रहे हैं। – matt

+0

इसके अलावा, हालांकि, मैं अनुमान लगा रहा हूं, मैं कहूंगा कि आपके द्वारा दिखाया गया टेलीग्राम इंटरफ़ेस UIPageViewController नहीं है - यह शायद केवल एक पेजिंग क्षैतिज UIScrollView है। केवल 6 "पेज" के साथ जो सिर्फ छवियां हैं, वैसे भी मैं इसे कैसे करूंगा, वैसे भी। – matt

0

स्विफ्ट 3 संस्करण, UIPageViewController उपवर्गीकरण जब:

override func viewDidLayoutSubviews() { 
    super.viewDidLayoutSubviews() 

    let subViews: NSArray = view.subviews as NSArray 
    var scrollView: UIScrollView? = nil 
    var pageControl: UIPageControl? = nil 

    for view in subViews { 
     if view is UIScrollView { 
      scrollView = view as? UIScrollView 
     } else if view is UIPageControl { 
      pageControl = view as? UIPageControl 
     } 
    } 

    if (scrollView != nil && pageControl != nil) { 
     scrollView?.frame = view.bounds 
     view.bringSubview(toFront: pageControl!) 
    } 
} 
संबंधित मुद्दे