gpt4 book ai didi

ios - viewForHeaderInSection 自动布局 - 引脚宽度

转载 作者:可可西里 更新时间:2023-11-01 04:46:07 24 4
gpt4 key购买 nike

我正在使用 UITableView 委托(delegate)方法 viewForHeaderInSection 在我的 UITableView 中提供节标题。

我最初创建的 View 是这样的:

UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 50)];

然后使用 Autolayout 添加一些 subview 然后返回 headerView

我遇到的问题是我不想专门指定 headerView 大小。我想使用自动布局将左右边缘固定到 View 的宽度。这就是问题所在,我没有可在自动布局代码中使用的 super View 。

使用上面的代码,意味着标题 View 不会在旋转时自动调整大小。旋转后必须重新加载 TableView 。

关于如何设置 headerView 以将其边缘固定到 tableview 的任何想法?

谢谢

最佳答案

根据我的测试和这个答案 here ,从该方法返回的 UIView 自动将其原点设置为 (0, 0),将其高度设置为从 -tableView 返回的值:heightForHeaderInSection: 并将其宽度设置为 UITableView 的宽度。

我能够向该 UIView 添加控件,甚至可以使用自动布局对它们进行布局,而无需在 init 方法中指定任何特定大小。

这是我创建标题 View 的代码:

self.headerView = [[UIView alloc] init];

这是我在标题 View 中布置控件的代码:

- (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 协议(protocol)的方法:

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
// The hard-coded values are accurate for my controls, but you might need more advanced logic
return 44.0f + self.segmentedControlBottomMargin + 44.0f + self.searchBarBottomMargin;
}
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
return self.headerView;
}

关于ios - viewForHeaderInSection 自动布局 - 引脚宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27860126/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com