6

Tôi đang sử dụng UIPageViewController để hiển thị hình ảnh toàn màn hình. Sự cố là hình ảnh không hiển thị toàn màn hình. Thay vào đó, có một khoảng trống ở phía dưới giữa hình ảnh và các chấm điểm điều khiển trang và trên cùng. Tôi có một UIViewController được thêm vào UIPageController như là một khung nhìn con/và ViewController đó có những hình ảnh đang được hiển thị bằng cách sử dụng ImageView. Tôi đang cố gắng làm điều này trong nhanh/bảng phân cảnh.làm cho hình ảnh xem toàn màn hình trong bộ điều khiển xem/trang xem điều khiển (nhanh chóng)

Tôi thay đổi tùy chọn thanh trên cùng và thanh dưới cùng thành "không" trong bảng phân cảnh, nhưng nó không hoạt động.

Hình ảnh Xem trước:

enter image description here

Các 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. 
} 

Các 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. 
} 

App đại biểu:

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

việc kiểm tra này ra http://stackoverflow.com/questions/21045630/how-to-put-the-uipagecontrol-element-on-top -of-the-trượt-trang-trong-một-uipage –

+0

Điều này hữu ích cho tôi [UIPageViewController UIImage không hiển thị toàn màn hình] (http://stackoverflow.com/questions/28732972/uipageviewcontroller-uiimage-not-showing- toàn màn hình) –

Trả lời

2

UIPageViewController có chế độ xem, trong đó các trang của nó sẽ xuất hiện. Các trang đó không được lớn hơn chế độ xem đó - nói cách khác, chúng là bên trong trình điều khiển chế độ xem trang.

Chế độ xem UIPageViewController của bạn nhỏ hơn màn hình - nó cho phép phòng ở dưới cùng cho điều khiển trang và nút và ở trên cùng cho thanh điều hướng. Bản thân bạn đang gây ra điều này là đúng:

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

Bạn đã cho phép khoảng cách 30 điểm ở khoảng cách trên cùng và 30 điểm ở dưới cùng. Do đó, những hình ảnh mà nó hiển thị không bao giờ có thể lớn hơn thế. Họ không bao giờ có thể là "toàn màn hình".

+0

Không thể làm điều gì đó như thế này? https://s-media-cache-ak0.pinimg.com/736x/a3/84/cd/a384cd83b85c64a175503c3ee9baa5d3.jpg –

+0

Rõ ràng là có, bạn có thể. Nhưng đó không phải là những gì bạn hỏi. Bạn hỏi tại sao _you_ không làm điều đó. Và tôi đã nói với bạn tại sao. - Thêm một chút thông tin vào câu trả lời của tôi, cho bạn thấy cách bạn tự làm cho hình ảnh nhỏ hơn màn hình. – matt

+0

Ngoài ra, mặc dù tôi chỉ đoán, tôi sẽ nói rằng giao diện Telegram bạn cho thấy không phải là một UIPageViewController - nó có lẽ chỉ là một phân trang ngang UIScrollView. Với chỉ 6 "trang" chỉ là hình ảnh, đó là cách tôi sẽ làm điều đó, anyway. – matt

0

Swift 3 phiên bản, khi subclassing 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!) 
    } 
} 
Các vấn đề liên quan