给tableview添加footerview后,如果table只有一个cell,footer在cell的底部显示有点高。无论表格有多少个单元格,如何使其显示在表格视图的底部?
问问题
127 次
3 回答
0
发生这种情况是因为您添加的页脚视图是您在UITableView
. 话虽如此,有一种方法可以获得您想要的输出。您可以做的是将 a 拖到情节提要中添加的UIView
下方UITableViewCell
,使其显示为页脚。
设置约束UILabel
或您想在此视图中显示的任何内容,我的意思是不要添加固定高度约束,否则您将收到烦人的布局破坏警告。复制此页脚视图并将其添加到底部UITableView
并为其添加固定高度,使其成为您在UITableView
. 有点像这样:
现在,为页脚视图的这个高度约束创建一个出口到您的UIViewController
.
现在,您viewDidLoad
可以做的是检查UITableView
添加单元格后的高度是否小于屏幕边界并相应地进行,如下所示:
- (void)viewDidLoad {
[super viewDidLoad];
//dont show footer view if cells are within screen bounds
if (numberOfCells * cellHeight < [UIScreen mainScreen].bounds.size.height){
UIView *footerView = mainTableView.tableFooterView;
CGRect tempFrame = footerView.frame;
tempFrame.size.height = 0.0f;
footerView.frame = tempFrame;
mainTableView.tableFooterView = footerView;
}else{
//dont show footerview below table view if cells are outside screen bounds
[footerHeightConstraint setConstant:0.0f];
}
}
注意:我错过了一个与高度相关的边缘情况,比如行*高度的乘积等于或小于屏幕边界,所以你必须看看。
于 2017-03-03T05:13:36.113 回答
0
footerView 只是背景,添加一个你真正想要的视图,就像这样:
func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return 100
}
func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
let footerView = UIView.init()
footerView.backgroundColor = .red
// footerView is just the background, add a view that you really want
let subView = UIView.init(frame: CGRect.init(x: 20, y: 20, width: UIScreen.main.bounds.width - 40, height: 100 - 40))
subView.backgroundColor = .yellow
footerView.addSubview(subView)
return footerView
}
于 2017-03-03T03:00:34.167 回答
0
这是我在 tableFooterView 上设置视图及其工作正常的代码。
@property (weak, nonatomic) IBOutlet UITableView *tblView;
@property (weak, nonatomic) IBOutlet UIView *viewTableFooterView;
- (void)viewDidLoad {
[super viewDidLoad];
_tblView.tableFooterView = _viewTableFooterView;
_tblView.backgroundColor = [UIColor greenColor];
[_tblView reloadData];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 10;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *simpleTableIdentifier = @"SimpleTableItem";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
}
cell.textLabel.text = [NSString stringWithFormat:@"%ld",(long)indexPath.row];
return cell;
}
检查代码,让我知道它是否不适合您。
于 2017-03-03T03:47:35.047 回答