免责声明:我有点像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);