0

给tableview添加footerview后,如果table只有一个cell,footer在cell的底部显示有点高。无论表格有多少个单元格,如何使其显示在表格视图的底部?

4

3 回答 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 回答