我正在使用UITableView
委托方法viewForHeaderInSection
在我的UITableView
中提供部分标题。
我最初创建一个这样的视图:
UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 50)];
然后使用Autolayout添加一些子视图,然后返回headerView
我遇到的问题是我不想具体指定headerView
大小。我想使用Autolayout来左侧和左侧右边缘到视图的宽度。这是问题,我没有在Autolayout代码中使用superview。
使用上面的代码表示标题视图不会在旋转时自动调整大小。您必须在轮换后重新加载tableview。
我是如何设置headerView
将其边缘固定到tableview的?
由于
答案 0 :(得分:2)
从我的测试和此回答here开始,该方法返回的UIView
自动将其原点设置为(0, 0)
,其高度设置为{{1}返回的值并将其宽度设置为-tableView: heightForHeaderInSection:
的宽度。
我能够向UITableView
添加控件,甚至可以使用自动布局将其排除,而无需在UIView
方法中指定任何特定大小。
这是我创建标题视图的代码:
init
这是我在标题视图中布置控件的代码:
self.headerView = [[UIView alloc] init];
以下是- (void)layoutControls {
[self.headerView addSubview:self.segmentedControl];
[self.headerView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-(margin)-[control]-(margin)-|"
options:0
metrics:@{@"margin": @(self.segmentedControlLeftRightMargin)}
views:@{@"control": self.segmentedControl}]];
[self.headerView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-(margin)-[control(==height)]"
options:0
metrics:@{@"margin": @(self.segmentedControlTopMargin),
@"height": @(self.segmentedControlHeight)}
views:@{@"control": self.segmentedControl}]];
[self.headerView addSubview:self.searchBar];
[self.headerView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-(margin)-[control]-(margin)-|"
options:0
metrics:@{@"margin": @(self.searchBarLeftRightMargin)}
views:@{@"control": self.searchBar}]];
[self.headerView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[control1]-(margin1)-[control2]-(margin2)-|"
options:0
metrics:@{@"margin1": @(self.segmentedControlBottomMargin),
@"margin2": @(self.searchBarBottomMargin)}
views:@{@"control1": self.segmentedControl,
@"control2": self.searchBar}]];
}
协议的方法:
UITableViewDelgate