由于我发现AutoLayout
我到处都使用它,现在我正尝试将其与一起使用tableHeaderView
。
我做了一个subclass
的UIView
加入一切(标签等...),我想用自己的约束,那么我将此CustomView
到UITableView
“ tableHeaderView
。
一切都工作得很好,除了UITableView
始终显示上面的CustomView
,通过以上我指的CustomView
是下的UITableView
,因此它不能被看到!
看来,无论我做什么,对height
的UITableView
“ tableHeaderView
是始终 0(所以是宽度,x和y)。
我的问题:无需手动设置框架就可以完成此操作吗?
编辑:我正在使用
的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的顶部处于同一水平,并且在我滚动时它们会一起移动。