Оскільки я виявив, 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, і вони рухаються разом, коли я прокручую.