我希望将视图显示在另一个视图的顶部。
这是我的视图层次结构:
基本上我想把按钮(Start Again)带到属于PageViewController的UIImageView前面。所以我希望能够使用图像顶部的按钮进行滚动。
这是我的代码:
- (void)viewDidLoad
{
[super viewDidLoad];
// Create the data model
_pageTitles = @[@"Over 200 Tips and Tricks", @"Discover Hidden Features", @"Bookmark Favorite Tip", @"Free Regular Update"];
_pageImages = @[@"page1.png", @"page2.png", @"page3.png", @"page4.png"];
// Create page view controller
self.pageViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"PageViewController"];
self.pageViewController.dataSource = self;
PageContentViewController *startingViewController = [self viewControllerAtIndex:0];
NSArray *viewControllers = @[startingViewController];
[self.pageViewController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];
// Change the size of page view controller
self.pageViewController.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height - 30);
[self addChildViewController:_pageViewController];
[self.view addSubview:_pageViewController.view];
[self.pageViewController didMoveToParentViewController:self];
}
答案 0 :(得分:1)
您是否尝试使用以下代码?
[self.view bringSubviewToFront:yourButtonView];
答案 1 :(得分:0)
正如 @iamataptool 建议我将PageViewController
带回来:
[self.view sendSubviewToBack: _pageViewController.view];
答案 2 :(得分:0)
您似乎正在使用故事板和程序化的UIView并行定位。因此,您有不同的解决方案:
通过手动向上推动来修复症状< - 不推荐通过
将按钮视图推到所有其他视图(也包括嵌入式视图)前面[self.view bringSubviewToFront:yourButtonView];
尽管如此,如上所述,这只会修复症状,但如果你想添加更多的“覆盖”字样。元素,你必须为所有这些元素做到这一点。更好的是:
或程序化方法:
在将UIPageViewController
的视图添加到视图层次结构后,以编程方式添加UIButton而不是故事板。所以在你这样做之后
[self.view addSubview:_pageViewController.view];
只需使用您的配置实例化UIButton并通过
添加它[self.view addSubview:yourProgrammaticallyCreatedButton];
或添加容器视图< - 我的推荐
在您的按钮下添加另一个视图(我们可以称之为容器视图) - 但不要将该按钮添加到该容器视图中。给它约束与UIViewController
视图具有相同的框架。保持IBOutlet
UIView
并使用此视图添加UIPageViewControllers视图。
_pageViewController.view.frame = self.containerView.bounds;
[self.containerView addSubView: _pageViewController.view]