我没有完整的答案,我不知道为什么您的第一行位于导航栏下方,也许您应该为此提供额外的代码或屏幕截图。
在最坏的情况下,我要么将 tableview 分组并排列,-(CGFloat)tableView:(UITableView*)tableView heightForHeaderInSection:(NSInteger)section
要么将一个虚拟视图从界面构建器中的对象拖放到 tableview 上方,这样第一行就无法进入导航栏下方。
无论如何,如果您必须以纵向和横向显示所有行,您可以检测方向变化并使行高变小或变大。
在 viewWillAppear 函数中添加通知器
-(void)viewWillAppear:(BOOL)animated{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged:) name:UIDeviceOrientationDidChangeNotification object:nil];}
方向变化通知此功能
- (void)orientationChanged:(NSNotification *)notification{
[self.tableview reloadData];
}
根据方向更改行高并在方向更改时缩小行
//row height
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
if (orientation == UIInterfaceOrientationPortrait || orientation == UIInterfaceOrientationPortraitUpsideDown)
{
//portrait mode view
return 40.0; //play with the value according to your needs
}
else if (orientation == UIInterfaceOrientationLandscapeLeft || orientation == UIInterfaceOrientationLandscapeRight)
{
//landscape view
return 30.0; //play with the value according to your needs
}
}