vis*_*kar 13 objective-c ios uipageviewcontroller
我正在使用UIPageViewController来全屏显示图像,UIViewController被添加到UIPageController作为子视图/子图像使用ImageView显示图像.问题是图像没有全屏显示,而是页面控制视图的底部显示在底部并且该空间完全被浪费.请查看附件中的图片.
这是代码
self.pageController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:nil];
self.pageController.dataSource = self;
[[self.pageController view] setFrame:[[self view] bounds]];
NewsItemViewController *initialViewController = [self viewControllerAtIndex:0];
NSArray *viewControllers = [NSArray arrayWithObject:initialViewController];
[self.pageController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];
[self addChildViewController:self.pageController];
[[self view] addSubview:[self.pageController view]];
[self.pageController didMoveToParentViewController:self];
Run Code Online (Sandbox Code Playgroud)
这里NewsItemViewController是UIViewController,显示图像和一些文本,MainViewController在MainViewController中实现UIPageViewControllerDataSource协议和必要的方法.
我相信必须有一种方法可以全屏显示.
***如果重要的话,MainViewController也是故事板的一部分.
vis*_*kar 39
最后自己得到了解决方案我只是从UIViewPageController隐藏页面控件,然后扩展UIPageViewController的大小以掩盖由于缺少页面控制而留下的空白.
NSArray *subviews = self.pageController.view.subviews;
UIPageControl *thisControl = nil;
for (int i=0; i<[subviews count]; i++) {
if ([[subviews objectAtIndex:i] isKindOfClass:[UIPageControl class]]) {
thisControl = (UIPageControl *)[subviews objectAtIndex:i];
}
}
thisControl.hidden = true;
self.pageController.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height+40);
Run Code Online (Sandbox Code Playgroud)
小智 21
好奇.该文件说:
如果实现了"支持页面指示符"中的两个方法,并且页面视图控制器的转换样式为UIPageViewControllerTransitionStyleScroll,则页面指示符可见.
这两种方法是:
- (NSInteger)presentationCountForPageViewController:(UIPageViewController *)pageViewController {
}
- (NSInteger)presentationIndexForPageViewController:(UIPageViewController *)pageViewController {
}
Run Code Online (Sandbox Code Playgroud)
您是否实现了这两种数据源方法?如果是这样,也许如果你删除它们,你不必手动删除页面控件(点)?快速测试将改变
UIPageViewControllerTransitionStyleScroll
Run Code Online (Sandbox Code Playgroud)
至
UIPageViewControllerTransitionStylePageCurl
Run Code Online (Sandbox Code Playgroud)
并查看页面控制指示符点是否消失.(当然,在评论出你的隐藏方法之后.)
g.r*_*ion 14
只有在实现以下方法后才会显示UIPageViewController点:
- (NSInteger)presentationCountForPageViewController:(UIPageViewController *)pageViewController;
Run Code Online (Sandbox Code Playgroud)
检查你的代码.并且在此方法中返回零将隐藏点(UIPageControl)
I am adding for swift 2.2 compatible code
for view in self.view.subviews {
if view.isKindOfClass(UIScrollView) {
view.frame = UIScreen.mainScreen().bounds
} else if view.isKindOfClass(UIPageControl) {
view.backgroundColor = UIColor.clearColor()
}
}
Run Code Online (Sandbox Code Playgroud)
This is the Swift 4 compatible solution, embedded in viewDidLayoutSubviews
for view in self.view.subviews {
if view.isKind(of:UIScrollView.self) {
view.frame = UIScreen.main.bounds
} else if view.isKind(of:UIPageControl.self) {
view.backgroundColor = UIColor.clear
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
21409 次 |
最近记录: |