UIPageViewController UIImage不显示全屏
我正在制作一个标签视图控制器的应用程序。 对于第一个选项卡,我有一个滚动浏览图片的UIPageViewController。 一切工作正常,除了图片不显示全屏。 我为图像视图设置了约束来覆盖整个视图控制器,但是当它被加载到页面视图中时,它并没有覆盖到底部。 图像被滚动的点指示器切断,然后只是白色的。
我确定它很简单,但是有没有一种方法可以让图像覆盖整个屏幕,就像我设置的约束一样?
这个页面上有个相当简单的解决scheme: http : //tunesoftware.com/?p=3363
这是通过覆盖UIPageViewController的viewDidLayoutSubviews方法来完成的 ,基本上做了两件事:
- 通过将UIPageViewController的框架设置为页面控制器视图的边界来增加UIPageViewController内部的UIScrollView (内容)边界
- 将UIPageControl元素(点)移动到视图层次结构的前面,以便它位于内容的前面
这是他提供的代码(万一链接被破坏):
import UIKit class TSPageViewController: UIPageViewController { override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() var subViews: NSArray = view.subviews var scrollView: UIScrollView? = nil var pageControl: UIPageControl? = nil for view in subViews { if view.isKindOfClass(UIScrollView) { scrollView = view as? UIScrollView } else if view.isKindOfClass(UIPageControl) { pageControl = view as? UIPageControl } } if (scrollView != nil && pageControl != nil) { scrollView?.frame = view.bounds view.bringSubviewToFront(pageControl!) } } }
所有你必须做的之后,是:
- 如果您在故事板中设置页面控制器,那么只需转到身份检查器窗格并将其类更改为TSPageViewController
- 如果你在代码中设置你的页面控制器,那么只要确保你为它定义的类inheritance了TSPageViewController类
干杯,乔
这是Objective-C版本。 创build一个新的类(2个文件):
(1)BasePageViewController.h扩展UIPageViewController
#import <UIKit/UIKit.h> @interface BasePageViewController : UIPageViewController @end
(2)包含viewDidLayoutSubviews
BasePageViewController.m覆盖
#import "BasePageViewController.h" @implementation BasePageViewController - (void) viewDidLayoutSubviews { [super viewDidLayoutSubviews]; UIScrollView *scrollView = nil; UIPageControl *pageControl = nil; for(UIView *view in self.view.subviews) { if([view isKindOfClass:[UIScrollView class]]) { scrollView = (UIScrollView *)view; }else if([view isKindOfClass:[UIPageControl class]]) { pageControl = (UIPageControl *)view; } } if(scrollView != nil && pageControl!=nil) { scrollView.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height); [self.view bringSubviewToFront:pageControl]; } } @end