我正在创建一个tab-view控制器的应用程序。对于第一个选项卡,我有一个滚动图片的UIPageViewController。一切正常,除了图片没有全屏显示。我为图像视图设置了约束以覆盖整个视图控制器,但是当它被加载到页面视图中时,它并不会一直覆盖到底部。图像被滚动点指示符切断,然后只是白色。
我确定它很简单,但是有没有一种方法可以让图像覆盖整个屏幕,就像我设置了约束一样?
答案 0 :(得分:6)
该页面上有一个非常简单的解决方案:http://tunesoftware.com/?p=3363
这是通过覆盖 UIPageViewController 的 viewDidLayoutSubviews 方法完成的,基本上做了两件事:
这是他提供的代码(如果链接被破坏):
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!)
}
}
}
之后您需要做的就是:
干杯, 乔
答案 1 :(得分:1)
这是Objective-C版本。创建一个新类(2个文件):
(1)扩展UIPageViewController的BasePageViewController.h
#import <UIKit/UIKit.h>
@interface BasePageViewController : UIPageViewController
@end
(2)包含viewDidLayoutSubviews
覆盖
#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