向 UITableView Header 添加子视图的宽度错误?

Posted

技术标签:

【中文标题】向 UITableView Header 添加子视图的宽度错误?【英文标题】:Adding sub view to UITableViewHeader getting wrong width? 【发布时间】:2016-04-25 09:28:37 【问题描述】:

首先我构建一个视图添加到 tableview 作为 tableHeaderView

 UIView *mainHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 300)];

    [self.mainViewTableView setTableHeaderView:mainHeaderView];

我可以调整 mainHeaderView 的高度,但我不能调整这个 headView 的 Y 位置。

我试图添加一个子视图:

self.searchForShop = [[UISearchBar alloc]initWithFrame:CGRectMake(0, 0, self.mainViewTableView.tableHeaderView.frame.size.width, 44)];
    [self.mainViewTableView addSubview:self.searchForShop];

运行app,发现subview的宽度比tableHeadView长。 做查看调试,发现子视图比tableHeadView宽16(我在iphone5s上运行)。

如何解决?

【问题讨论】:

你在使用自动布局吗? 【参考方案1】:

你可以这样尝试,设置tableview的宽度可能有问题,将搜索栏的宽度设置为tableview的宽度

//create a tableview
tableView=[[UITableView alloc]initWithFrame:self.view.bounds style:UITableViewStylePlain];
[self.view addSubview:self.tableView];
self.tableView.delegate=self;
self.tableView.dataSource=self;


UISearchBar *searchBar=[[UISearchBar alloc]init];
/* option 1 ->[searchBar sizeToFit]; */
/* option 2 ->*/ searchBar.frame = CGRectMake(0, 0, self.tableView.bounds.size.width, 44); //set the width how much table view has
searchBar.delegate=self;
[self.tableView setTableHeaderView:searchBar];

【讨论】:

感谢您的回答。我尝试找到选项 1,searchBar 会比 tableview 短一点。选项 2 搜索栏将只有 tableview 的 2/3 宽度与 我正在尝试将我的代码移动到 viewdidappear 中,它可以正常工作。

以上是关于向 UITableView Header 添加子视图的宽度错误?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 UITableView Header 上添加 UICollectionView

动态布局UITableView的cell , header , footer

在 UITableview 部分的 Header 视图中从 UIButton 检索部分

使用自定义 UITableView 子视图

tableView Header 拒绝多个子视图

向分组的 UITableView 添加阴影