UINavigationBar处于错误的位置

时间:2013-04-21 11:45:47

标签: iphone ios xcode uinavigationbar

我使用以下代码在视图中添加了一个导航栏:

- (void)viewDidLoad
{
    [super viewDidLoad];
    UINavigationBar *navBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
    UINavigationItem *navItem = [[UINavigationItem alloc] initWithTitle:@"Load Colors"];
    [navBar pushNavigationItem:navItem animated:NO];
    UIBarButtonItem *editButton = [[UIBarButtonItem alloc] initWithTitle:@"Edit"
                                                                   style:UIBarButtonItemStyleBordered
                                                                  target:self
                                                                  action:@selector(toggleEdit:)];
    navItem.rightBarButtonItem = editButton;
    [self.view addSubview:navBar];

    CGRect tableFrame = self.tableView.frame;
    tableFrame.origin.y = tableFrame.origin.y +45;
    self.tableView.frame = tableFrame;
}

你可以在下面的图片中看到它来自我的tableView .. 我该如何解决?

enter image description here

4 个答案:

答案 0 :(得分:0)

您可以将tableview origin.y设置为45,以便导航栏不会超过tableview

答案 1 :(得分:0)

CGRect navframe = [[self.navigationController navigationBar] frame];

使用'navframe.size.height'计算导航栏的高度,并将TableView orgin'y'设置为此高度值。

答案 2 :(得分:0)

我不知道你的情况是否合适,但是向ViewController添加NavigationBar的最佳方法是将ViewController包含在NavigationViewController中。在这种情况下,您也无需担心设备旋转时的正确转换。

我试图手动实现一次(因为我只在一个视图上需要一个导航栏,所以我认为使用NavigationController会是一种过度杀伤力)。但最后我删除了所有代码并改为使用了NavigationController。

答案 3 :(得分:0)

在xib文件中,您可以为导航栏提供空间。下图描述了它。enter image description here然后您可以添加您的tableview。

UINavigationBar的正常显示尺寸为320x44,视频显示iPhone的尺寸为640x88。

并在viewWillAppear

中使用此代码
    //for custom navigationbar
    UINavigationBar *navBarName = [[self navigationController] navigationBar];
    UIImage *backgroundImg = [UIImage imageNamed:@"NavBar.png"];// ur navigationbar image of above dimension
    [navBarName setBackgroundImage:backgroundImg forBarMetrics:UIBarMetricsDefault];

    //for right edit button
    UIBarButtonItem *editButton = [[UIBarButtonItem alloc] initWithTitle:@"Edit" style:UIBarButtonItemStylePlain target:self action:@selector(toggleEdit:)];          
  self.navigationItem.rightBarButtonItem = editButton;