UIPageViewController 和 UIButton 混合使用
Posted
技术标签:
【中文标题】UIPageViewController 和 UIButton 混合使用【英文标题】:UIPageViewController and UIButton mix use 【发布时间】:2014-12-20 15:12:04 【问题描述】:事情是这样的:当人们启动它时,我的应用程序需要一系列教程屏幕,以及屏幕底部的两个按钮,让人们注册或登录。 (如图所示)
我的问题是:当人们滑动教程图片时,我怎样才能让按钮保持在屏幕上?
我尝试了几种方法:
在 PageContentViewController(UIViewController 的子类)中,我有一个用于教程图像的 UIImageView 和两个用于按钮的 UIButton。这样,按钮也会滑动,而不是我想要的。
我为按钮使用了一个新的 ViewController,在我的 rootviewController 中,我将这个新的 viewcontroller 添加为一个子视图。这样,新的视图控制器将教程图像隐藏在它下面。我不能滑动图像。我也试过设置新的viewcontroller的alpha值,这样我可以看到它下面的图像,但还是不能滑动。
我可以学习任何更好的想法或示例代码吗?
【问题讨论】:
你必须把这两个按钮放在 UIPageViewController 上面 【参考方案1】:这很简单。诀窍是在页面视图控制器视图的“顶部”添加按钮。也就是说,在添加页面视图控制器之后,您可以使用 sendSubviewToBack 方法来确保按钮保持在前台,同时您将能够在页面视图控制器的不同视图控制器之间滑动。您只需按照以下步骤即可理解此行为:
-
打开 Xcode。
创建一个新项目并选择“基于页面的应用程序”。
Xcode 将在 RootViewController 中创建一个带有 UIPageViewController 实现的基本应用程序。在 RootViewController 的 viewDidLoad 方法中,你会看到如下代码:
- (void)viewDidLoad
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
// Configure the page view controller and add it as a child view controller.
self.pageViewController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:nil];
self.pageViewController.delegate = self;
DataViewController *startingViewController = [self.modelController viewControllerAtIndex:0 storyboard:self.storyboard];
NSArray *viewControllers = @[startingViewController];
[self.pageViewController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];
self.pageViewController.dataSource = self.modelController;
[self addChildViewController:self.pageViewController];
[self.view addSubview:self.pageViewController.view];
// Set the page view controller's bounds using an inset rect so that self's view is visible around the edges of the pages.
CGRect pageViewRect = self.view.bounds;
self.pageViewController.view.frame = pageViewRect;
[self.pageViewController didMoveToParentViewController:self];
// Add the page view controller's gesture recognizers to the book view controller's view so that the gestures are started more easily.
self.view.gestureRecognizers = self.pageViewController.gestureRecognizers;
现在以 Main.storyboard 为例,您将看到 RootViewController 场景。使用界面构建器将 UIButton 添加到其视图。
现在在 viewDidLoad 方法的末尾添加以下行。
[self.view sendSubviewToBack:self.pageViewController.view];
试一试!你会发现这正是你想要的。
查看输出截图:
【讨论】:
以上是关于UIPageViewController 和 UIButton 混合使用的主要内容,如果未能解决你的问题,请参考以下文章
Swift pagecontroller 故事板 UI 对象与 UIPageviewcontroller 连接
UIPageViewController -presentationCount 不触发
如何更改 UIPageViewController 中的按钮名称
iOS6 自动旋转 - UIPageViewController