在 UI 表视图中有
一到三个 UI 表视图单元格
。有没有办法在重新加载数据
后始终将单元格放置在屏幕底部?
+----------------+ +----------------+ +----------------+
| | | | | |
| | | | | |
| | | | | |
| | | | | +------------+ |
| | | | | | cell 1 | |
| | | | | +------------+ |
| | | +------------+ | | +------------+ |
| | | | cell 1 | | | | cell 2 | |
| | | +------------+ | | +------------+ |
| +------------+ | | +------------+ | | +------------+ |
| | cell 1 | | | | cell 2 | | | | cell 3 | |
| +------------+ | | +------------+ | | +------------+ |
+----------------+ +----------------+ +----------------+
您可以在表格视图中设置一个标题,并使其高度足以向下推第一个单元格。然后相应地设置tableView的contentOffset。我不认为有一个快速的内置方法来做到这一点。
每当添加一行时调用此方法:
- (void)updateContentInset {
NSInteger numRows=[self tableView:_tableView numberOfRowsInSection:0];
CGFloat contentInsetTop=_tableView.bounds.size.height;
for (int i=0;i<numRows;i++) {
contentInsetTop-=[self tableView:_tableView heightForRowAtIndexPath:[NSIndexPath indexPathForItem:i inSection:0]];
if (contentInsetTop<=0) {
contentInsetTop=0;
break;
}
}
_tableView.contentInset = UIEdgeInsetsMake(contentInsetTop, 0, 0, 0);
}
我已经创建了一个新的示例解决方案,因为以前的答案对于现代使用来说并没有过时。
最新的技术使用自动布局和自调整单元格大小,因此之前的答案将不再有效。我重新设计了解决方案以使用现代功能,并创建了一个示例项目以放在GitHub上。
这个代码不是计算每一行的高度,这会导致额外的工作,而是获取最后一行的框架,这样就可以计算从顶部插入的内容。它利用了表格视图已经在做的事情,所以不需要额外的工作。
此代码也仅在为键盘或其他叠加层设置底部插图时才设置顶部插图。
请在 GitHub 上报告任何错误或提交改进,我将更新此示例。
GitHub:https://github.com/brennanMKE/BottomTable
- (void)updateContentInsetForTableView:(UITableView *)tableView animated:(BOOL)animated {
NSUInteger lastRow = [self tableView:tableView numberOfRowsInSection:0];
NSUInteger lastIndex = lastRow > 0 ? lastRow - 1 : 0;
NSIndexPath *lastIndexPath = [NSIndexPath indexPathForItem:lastIndex inSection:0];
CGRect lastCellFrame = [self.tableView rectForRowAtIndexPath:lastIndexPath];
// top inset = table view height - top position of last cell - last cell height
CGFloat topInset = MAX(CGRectGetHeight(self.tableView.frame) - lastCellFrame.origin.y - CGRectGetHeight(lastCellFrame), 0);
UIEdgeInsets contentInset = tableView.contentInset;
contentInset.top = topInset;
UIViewAnimationOptions options = UIViewAnimationOptionBeginFromCurrentState;
[UIView animateWithDuration:animated ? 0.25 : 0.0 delay:0.0 options:options animations:^{
tableView.contentInset = contentInset;
} completion:^(BOOL finished) {
}];
}
问题内容: 设置网页的最佳做法是什么,以便在该网页上显示的内容/文本很少的情况下,页脚显示在浏览器窗口的底部,而不是显示在网页的中途? 问题答案: 您正在寻找的是 CSS Sticky Footer 。
我的xib布局喜欢在绘图下,除了“c”的高度常数之外,我还设置了从“a”到“b”到...“e”的约束,以便可以确定单元格的高度。有时“c”会隐藏,因为一些原因,我将高度常数更改为零,并在标签内容可见时按实际高度更改。 但有一个自动布局警告让我发疯 我也很想了解为什么会发生这种情况
问题内容: 鉴于以下HTML: 我想坚持到底。 不使用绝对定位就可以实现吗?如果float属性支持’bottom’的值,那似乎可以解决问题,但是不幸的是,事实并非如此。 问题答案: 可能不会。 分配给,然后分配给。
问题内容: 我是.Net开发人员,但出于某种原因,我不知为何要用java创建一个简单的应用程序。我能够创建该应用程序,但是我的问题是启动应用程序时如何在屏幕上居中放置表单? 这是我的代码: 上面的代码工作正常,但问题是我已经看到表格从最左上角移到中间屏幕。我还尝试在事件中添加该代码,但仍显示相同的操作。有更好的方法吗?就像里面有一个。还是如果上面的代码正确,我将在哪个事件上放? 感谢您阅读本文。
问题内容: 嗨,我正在使用类似于以下内容的方法来将div定位在屏幕中间: 但是,这样做的问题是它将项目放置在页面的中间而不是屏幕的中间。因此,如果页面高了几个屏幕,而我使div出现时,我就位于页面的顶部(该部分的顶部显示在屏幕上)。您必须向下滚动才能查看它。 有人可以告诉我您如何将其显示在屏幕中间吗? 问题答案: 只需添加即可,即使您向下滚动也可以看到它。
问题内容: 我有此功能可将对象居中放在屏幕中间。 我想居中QMainWindow,QInputDialog和QMessageBox。 这是我的MessageBox: 这是我的QInputDialog: 这是我的中心功能: 我只能居中QMainWindow。 逻辑是将对象移动到topLeft点(screenWidth / 2-objectWidth / 2,screenHeight / 2-obje