将 uiview 添加到 UITableView 标头得到错误的宽度?

Adding sub view to UITableViewHeader getting wrong width?

首先我建立一个视图添加到 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中运行)。

如何解决?

你可以这样试试,可能是tableview的宽度设置有问题,把search bar的宽度设置成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];