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

如何在 UIPageViewController 中重用相同的 ViewController?

更改 UIPageViewController 中显示的初始视图控制器