我创建了一个带有一堆视图控制器的导航控制器。
我想在底部添加一个子视图,当用户在这一堆视图之间导航时,该子视图保持静态(不移动)。
就像在某些应用中一样,底部有一个“广告栏”。
我该怎么做?
答案 0 :(得分:13)
如果我理解正确,这就是你想要的:
您可以通过创建一个包含UINavigationController的自定义UIViewController来实现此目的。创建一个名为“CustomViewController”的新类,并粘贴以下代码:
<强>接口强>
#import <UIKit/UIKit.h>
@interface CustomViewController : UIViewController
- (id)initWithViewController:(UIViewController*)viewController bottomView:(UIView*)bottomView;
@end
<强>实施强>
#import "CustomViewController.h"
@implementation CustomViewController
- (id)initWithViewController:(UIViewController*)viewController bottomView:(UIView*)bottomView
{
self = [super init];
if (self) {
// Set up view size for navigationController; use full bounds minus 60pt at the bottom
CGRect navigationControllerFrame = self.view.bounds;
navigationControllerFrame.size.height -= 60;
viewController.view.frame = navigationControllerFrame;
// Set up view size for bottomView
CGRect bottomViewFrame = CGRectMake(0, self.view.bounds.size.height-60, self.view.bounds.size.width, 60);
bottomView.frame = bottomViewFrame;
// Enable autoresizing for both the navigationController and the bottomView
viewController.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
bottomView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin;
// Add views as subviews to the current view
[self.view addSubview:viewController.view];
[self.view addSubview:bottomView];
}
return self;
}
@end
现在使用CustomViewController:
UIView *myBottomView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 100)];
myBottomView.backgroundColor = [UIColor redColor];
CustomViewController *customViewController = [[CustomViewController alloc] initWithViewController:<yourNavigationController> bottomView:myView];
答案 1 :(得分:0)
为什么不在与导航控制器视图相同的级别添加此静态子视图(通常在UIWindow附近)。只需将其添加到最顶层即可。