我是iOS
的新手以及我在跟随
UIViewController
UITableView
和UINavigationBar
为@interface CategoryGroupViewController : UIViewController<UITableViewDataSource, UITableViewDelegate> @property (weak, nonatomic) IBOutlet UINavigationBar *navigationBar; @property (strong, nonatomic) IBOutlet UITableView *tableView; @end
在XIB
中,它看起来像是
当我运行我的应用程序时,它看起来像
我在网上查看了解决方案,并尝试设置
self.edgesForExtendedLayout = UIRectEdgeNone;
但这似乎无法解决问题。 有人可以指导我缺少什么吗?
谢谢
答案 0 :(得分:0)
按照以下步骤使用NavigationContoller的默认导航栏。
所以你的流程是UIWindow&gt; UINavigationController&gt;的UIViewController。
appDidFinishlaunching
中的
self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainscreen].bounds];
self.vc = [[CategoryGroupViewController alloc]initWithNibName:@"CategoryGroupViewController" bundle:nil];
self.navC = [[UINavigationController alloc]initWithRootViewController:self.vc];
self.navC.navigationBar.translucent = NO;
self.window.rootViewController = self.navC;
[self.window makeKeyAndVisible];
现在运行您的应用程序,您将获得64px导航栏。如果你想标题那个viewcontroller那么
self.title = @"Pick Group";
如果要隐藏此导航栏,则只需在特定控制器中使用代码即可。但是一旦你隐藏了导航栏将隐藏在整个应用程序中。所以你必须手动管理它。
self.navigationController.navigationBarHidden = YES;
也许这会对你有帮助。
答案 1 :(得分:0)
从iOS 7开始,Apple限制使用状态栏和导航栏。我的意思是它现在是透明的。
仍然有办法实现我们的目标。
方式1:我们可以使用64 px的导航条图像(128 x @ 2x分辨率)。 它会自动为我们的导航栏和状态栏着色。
方式2:我们可以选择其他解决方案
if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
self.edgesForExtendedLayout = UIRectEdgeNone;
您需要在-(void)viewDidLoad
方法中添加以上内容。
由于
答案 2 :(得分:0)
假设您明确打算使用自己的导航栏而不是UINavigationController提供的导航栏,则需要考虑顶部布局指南。现在你的栏被限制在视图的顶部,而不是需要考虑状态栏的高度。您还希望能够响应状态栏的扩展(就像您在通话中一样)。这些约束可以解决问题
id topGuide = self.topLayoutGuide;
UINavigationBar *navBar = self.navigationBar
//navBar.top == self.view.top
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[navBar]"
options:0
metrics:nil
views:NSDictionaryOfVariableBindings (navBar)]];
//pin navBar to horizontal edges
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[navBar]|"
options:0
metrics:nil
views:NSDictionaryOfVariableBindings (navBar)]];
//navBar.bottom = statusBar.bottom + 44
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:navBar
attribute:NSLayoutAttributeBottom
relatedBy:NSLayoutRelationEqual
toItem:topGuide
attribute:NSLayoutAttributeBottom
multiplier:1.f
constant:44]];
答案 3 :(得分:0)
我遇到了同样的问题。但是通过增加delta y position
的{{1}}来解决我的问题。
查看以上屏幕截图。您可以像这样添加view
位置。这对我有用。希望它对你有用。试试这个。