2014-09-29 106 views
0

我見過其他一些例子,但我沒有看到任何真正粘附的東西。我想要的基本上是tableViewHeader的功能。我有一個帶有導航欄的tableViewController。我想將視圖放置在位於導航欄正下方的小欄中顯示一些搜索條件的位置。但是當用戶滑動查看結果時,我需要將其粘住。在導航欄下添加一個粘滯視圖

我已經嘗試添加一個UIView作爲導航欄的子視圖,但它總是坐在導航欄的頂部,覆蓋了一切。

+0

爲什麼不使用頂部的佈局指南和視圖的頂部設置爲topLayoutGuide.bottom? – CapturedTree 2017-09-08 22:08:38

回答

2

這裏是什麼工作:

// Create a custom navigation view 
    _navigationView = [[UIView alloc] init]; 
    _navigationView.backgroundColor = [UIColor whiteColor]; 
    _navigationView.frame = CGRectMake(0.0f, 
             self.navigationController.navigationBar.frame.origin.y + 44.0f, 
             self.view.frame.size.width, 
             30.0f); 

    // Create bottom border for the custom navigation view 
    _navigationViewBorder = [[UIView alloc] init]; 
    _navigationViewBorder.backgroundColor = [UIColor darkGrayColor]; 
    _navigationViewBorder.tag = 1; 
    _navigationViewBorder.frame = CGRectMake(0.0f, 
              self.navigationController.navigationBar.frame.origin.y + 74.0f, 
              self.view.frame.size.width, 
              0.5f); 

    // Add labels for date, results, and the time range 
    _dateDisplay = [[UILabel alloc] initWithFrame:CGRectMake(10, 0, 70, 15)]; 
    [_dateDisplay setFont:[UIFont fontWithName:@"HelveticaNeue" size:13]]; 
    [_dateDisplay setText:@""]; 

    _timeRangeDisplay = [[UILabel alloc] initWithFrame:CGRectMake(98, 0, 135, 15)]; 
    [_timeRangeDisplay setFont:[UIFont fontWithName:@"HelveticaNeue-Bold" size:13]]; 
    [_timeRangeDisplay setText:@""]; 

    _resultsDisplay = [[UILabel alloc] initWithFrame:CGRectMake(240, 0, 80, 15)]; 
    [_resultsDisplay setFont:[UIFont fontWithName:@"HelveticaNeue" size:13]]; 
    [_resultsDisplay setText:@""]; 

    [_navigationView addSubview: _dateDisplay]; 
    [_navigationView addSubview: _timeRangeDisplay]; 
    [_navigationView addSubview: _resultsDisplay]; 

    // Add two views to the navigation bar 
    [self.navigationController.navigationBar.superview insertSubview:_navigationView belowSubview:self.navigationController.navigationBar]; 
    [self.navigationController.navigationBar.superview insertSubview:_navigationViewBorder belowSubview:_navigationView]; 
1

爲什麼不將視圖添加到您的viewController的視圖,並設置其約束,以便它位於navigationBar下方,但在tableView上方?

如果它只是在某些時候存在,您可以動畫化它的約束來顯示/隱藏它。

+0

我通過[self.view addSubview]添加了它,但沒有粘住。我假設因爲這是一個tableViewController,而不是一個ViewController和一個tableView。 – jlrolin 2014-09-29 15:01:11

+0

啊,我錯過了那個細節,我的歉意。如果你使用帶有UITableView屬性的UIViewController,那麼你可能對視圖層次結構有更多的控制權。使用UITableViewController,我很確定self.view實際上是tableView。所以你可能需要轉換成一個普通的UIViewController來實現你正在尋找的東西。 – 2014-09-29 15:11:19

+0

您可以使用'tableView'上的'setContentInset'來將其向下移動,然後通過向下移動表視圖的方式在所需的可用空間中插入一個視圖和所需的控件。 – CapturedTree 2017-07-18 18:07:13