免责声明:我有点像iOS n00b。我有一个基于导航的应用程序-即在我的AppDelegate中,创建了导航框架:

self.navigation_controller = [[UINavigationController alloc] initWithRootViewController:home_view_controller];
self.window = [[UIWindow alloc] initWithFrame:UIScreen.mainScreen.bounds];
self.window.rootViewController = navigation_controller;
self.window.makeKeyAndVisible;


在主视图框架内,我需要一个搜索栏,然后是可滚动的表格视图。所以,我这样写:

- viewDidLoad{
  (HomeView*)home_view = [[HomeView alloc] init];
  self.view = home_view
  self.view.backgroundColor = [UIColor whiteColor]

  (UITableView*)self.table_view = [UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain];
  self.table_view.bounds.origin.y += 44;
  self.table_view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
  self.table_view.dataSource = self;
  self.table_view.delegate = self;
  [self.view addSubview:self.table_view];

  search_frame = self.view.bounds;
  search_frame.origin.y = 48.0;
  search_frame.size.height = 48.0;

  self.search_bar = [[UISearchBar alloc] initWithFrame:search_frame)];
  [self.view addSubview:self.search_bar];
}


表格视图显示正常,但占据了导航栏下方的所有空间。我想要导航栏,然后在其下方紧紧是搜索栏,然后是表格视图。在viewDidLoad的位置,UITableView尚未具有非零边界rect,我希望这是问题的一部分。另外,当我真的想在UIViewAutoresizingFlexibleHeight中将autoresizingMask指定为粘在搜索栏上时-再次,我相信这可能是问题的一部分。

我在这里误解了什么?

谢谢

最佳答案

史蒂夫

尝试以下更改:

1)使用以下方法设置tableview的框架:

CGRect targetRect = CGRectMake(0, 48, self.view.frame.size.width, self.view.frame.size.heigth);
(UITableView*)self.table_view = [UITableView alloc] initWithFrame:targetRect style:UITableViewStylePlain];


2)还添加以下自动尺寸蒙版:

// This value will anchor your table view with top margin
UIViewAutoresizingFlexibleBottomMargin


3)将搜索栏的框架设置为以下矩形框架:

CGRecttMake(0, 0, self.view.frame.size.width, 48);

09-16 07:35