gpt4 book ai didi

ios - UITableViewHeaderFooterView 和界面生成器 : how to adjust width for different devices?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:16:15 25 4
gpt4 key购买 nike

我正在为我的 UITableView 实现自定义页眉 View 。我创建了一个 HeaderView 类,它扩展了 UITableViewHeaderFooterView 和这个 View 的 Nib 文件。

在 View Controller 中,我注册了它:

[self.tableView registerNib:[UINib nibWithNibName:@"HeaderView" bundle:[NSBundle mainBundle]] forHeaderFooterViewReuseIdentifier:@"HeaderView"];

然后设置为标题:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
HeaderView *view = [tableView dequeueReusableHeaderFooterViewWithIdentifier:@"HeaderView"];
return view;
}

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
return 26.0f;
}

问题是 View 的宽度始终与 nib 文件中的宽度相同。由于现在有多种屏幕宽度,我不能简单地在 nib 文件中将 View 宽度设置为 320(或表格 View 的宽度)。

我应该如何设置标题 View 使其自动适合表格宽度?

更新:这是我将 View 模拟指标从 Inferred 更改为固定指标时的比较(在本例中为 iPhone 3.5"):

img http://cl.ly/image/451n2N303J3S/Image%202015-04-19%20at%206.39.58%20PM.png

最佳答案

有同样的问题...我找到的唯一解决方案是将自定义 UITableViewHeaderFooterView 中 subview 的所有框架设置为相应的状态。

肮脏的例子:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
NSString *headerIdentifier = @"SectionHeader";
TableViewHeaderFooterView *headerView = [tableView dequeueReusableHeaderFooterViewWithIdentifier:headerIdentifier];
if (headerView == nil) {
headerView = [[TableViewHeaderFooterView alloc] initWithReuseIdentifier:headerIdentifier];
}
.....
[headerView setWidthForSubviews:tableView.frame.size.width]; // set the right width of the right subviews
....
return headerView;
}

在 TableViewHeaderFooterView 中

- (void)setWidthForSubviews:(CGFloat)width {
for (UIView *view in @[[self viewWithTag:1],[self viewWithTag:2],[self viewWithTag:3], ...]) {
view.frame = CGRectMake(view.frame.origin.x, view.frame.origin.y, width, view.frame.size.height);
}
}

如果有人找到其他解决方案,我将不胜感激,但似乎 UITableViewHeaderFooterView 可能存在自动布局问题,尤其是当您从 nib 加载它时。

关于ios - UITableViewHeaderFooterView 和界面生成器 : how to adjust width for different devices?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29735972/

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