Поскольку я обнаружил, AutoLayout
что использую его везде, теперь я пытаюсь использовать его с tableHeaderView
.
Я сделал subclass
из UIView
добавленных все (этикеток и т.д. ...) Я хотел с их ограничениями, то я добавил это CustomView
к UITableView
' tableHeaderView
.
Все работает отлично , за исключением UITableView
всегда отображается вышеCustomView
, по выше я имею в виду CustomView
это подUITableView
поэтому он не может быть виден!
Кажется , что независимо от того , что я делаю, то height
из UITableView
' tableHeaderView
является всегда 0 (так ширина х и у).
У меня вопрос: а можно ли вообще это сделать без ручной настройки рамки ?
EDIT:CustomView
' , subview
что я использую имеет следующие ограничения:
_title = [[UILabel alloc]init];
_title.text = @"Title";
[self addSubview:_title];
[_title keep:[KeepTopInset rules:@[[KeepEqual must:5]]]]; // title has to stay at least 5 away from the supperview Top
[_title keep:[KeepRightInset rules:@[[KeepMin must:5]]]];
[_title keep:[KeepLeftInset rules:@[[KeepMin must:5]]]];
[_title keep:[KeepBottomInset rules:@[[KeepMin must:5]]]];
Я использую удобную библиотеку KeepLayout, потому что написание ограничений вручную занимает вечность и слишком много строк для одного ограничения, но методы говорят сами за себя.
И у UITableView
него есть следующие ограничения:
_tableView = [[UITableView alloc]init];
_tableView.translatesAutoresizingMaskIntoConstraints = NO;
_tableView.delegate = self;
_tableView.dataSource = self;
_tableView.backgroundColor = [UIColor clearColor];
[self.view addSubview:_tableView];
[_tableView keep:[KeepTopInset rules:@[[KeepEqual must:0]]]];// These 4 constraints make the UITableView stays 0 away from the superview top left right and bottom.
[_tableView keep:[KeepLeftInset rules:@[[KeepEqual must:0]]]];
[_tableView keep:[KeepRightInset rules:@[[KeepEqual must:0]]]];
[_tableView keep:[KeepBottomInset rules:@[[KeepEqual must:0]]]];
_detailsView = [[CustomView alloc]init];
_tableView.tableHeaderView = _detailsView;
Я не знаю, нужно ли мне устанавливать какие-то ограничения непосредственно на CustomView
, я думаю, что высота CustomView определяется ограничениями на UILabel
«заголовок» в нем.
РЕДАКТИРОВАТЬ 2: после другого исследования кажется, что высота и ширина CustomView рассчитаны правильно, но верх CustomView по-прежнему находится на том же уровне, что и верх UITableView, и они перемещаются вместе, когда я прокручиваю.