自从我发现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
“title”的约束决定的。
编辑 2:经过另一次调查,似乎正确计算了 CustomView 的高度和宽度,但 CustomView 的顶部仍与 UITableView 的顶部处于同一水平,并且当我滚动时它们一起移动。