2014-09-29 5 views
0

Я видел несколько других примеров, но я не видел ничего, что на самом деле прилипает. То, что я хочу, это то, что делает tableViewHeader. У меня есть tableViewController с панелью навигации. Я хочу поставить точку зрения, которая показывает некоторые критерии поиска на маленькой панели непосредственно под навигационной панелью. Но мне нужно, чтобы это было, когда пользователь просматривает результаты.Добавьте липкий вид под панель навигации

Я попытался добавить UIView в качестве подпункта на панель навигации, но он всегда находится в верхней части панели навигации, накладывая все.

+0

Почему бы не использовать верхнюю направляющую макета и установите верхнюю часть вида по к topLayoutGuide.bottom? – CapturedTree

ответ

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 и установить его ограничения, чтобы он находился чуть ниже навигационной панели, но над табличным представлением?

Если это только должно быть там некоторое время, вы можете анимировать его ограничения, чтобы показать/скрыть его.

+0

Я добавил его через [self.view addSubview], но он не застрял. Я предполагаю, что это tableViewController, а не ViewController с табличным представлением. – jlrolin

+0

Ahhh, я пропустил эту деталь, мои извинения. Если вы должны использовать UIViewController с свойством UITableView, то у вас может быть немного больше контроля над иерархией представления и т. Д. Используя UITableViewController, я уверен, что self.view на самом деле является tableView. Поэтому вам может потребоваться конвертировать в обычный UIViewController для достижения того, что вы ищете. –

+0

Вы можете использовать 'setContentInset' в' tableView', чтобы переместить его вниз, а затем вставить представление с помощью необходимых элементов управления в этом свободном пространстве, которое вы будете иметь, перемещая представление таблицы вниз. – CapturedTree

Смежные вопросы