ios - UITableView 和 UITableViewHeader 在旋转和调整大小后发生冲突

标签 ios objective-c uitableview rotation frame

我有一个带有表头(不是节头)的 TableView ,它们都根据方向调整大小。在我的实现中,我在 viewWillLayoutSubviews 中为两个 View 设置了框架。

我现在的问题是,虽然两者在旋转后都可以单独正确调整大小,但 tableView 的原点并没有改变以考虑标题的高度变化。这会导致它们之间出现空格或标题覆盖某些单元格。

我的目标是纵向显示,tableview 具有屏幕宽度和长标题。当旋转到横向时,宽度减小到屏幕宽度的三分之一,右对齐,标题较短。此外,我需要所有这些更改的旋转动画流畅且合乎逻辑。

我对 iOS 旋转和动画实践相当陌生,所以如果有人有更好的建议,我将不胜感激。

最佳答案

在您重新分配 tableHeader 之前,表格 View 不会遵守新的标题高度。

类似问题:

当轮换将要或已经完成时,您可以执行以下操作:

- (void)didRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    self.tableView.tableHeaderView = self.tableView.tableHeaderView;
}

事实上,这里也是计算header高度的地方:

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    CGRect frame = self.tableView.tableHeaderView.frame;
    frame.size.height = UIInterfaceOrientationIsLandscape(toInterfaceOrientation) ? 50 : 150;
    self.tableView.tableHeaderView.frame = frame;

    self.tableView.tableHeaderView = self.tableView.tableHeaderView;
}

关于ios - UITableView 和 UITableViewHeader 在旋转和调整大小后发生冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21763421/

相关文章:

ios - 以前由于内存不足而未显示时,如何在 iPhone 上强制进行 View 渲染?

iphone - 我可以查明应用权限何时更改吗?

ios - VoIP - 通过 iOS 进行 GSM 通话

ios - 在 UIPopoverController 中以可变宽度显示 UITableViewController

objective-c - 如何检测 Mac 触控板上的四指点击?

ios - 使用 NSMutableArray 中对象的元素设置 cell.backgroundColor

iphone - 单元格处于编辑模式时如何显示披露指示符?

ios - UITableView 中按月划分的部分

android - 如何在 Firebase 项目中启用 Google Analytics

objective-c - 以 UTF16 格式写入时 iOS 导出文件中的额外空格