tableview标题上的图片大小不正确

时间:2016-02-03 14:04:02

标签: ios objective-c

我在界面构建器中设置了一个XIB,我正在尝试将此xib用作我的tableview标头。此XIB具有图像视图,此图像上方是一些标签。 Imageview固定在各方面。在将此XIB设置为tableview标头之前,我将viewDidLoad中的帧设置为:

self.viewTableHeader.frame = CGRectMake(0, 0, CGRectGetWidth([UIScreen mainScreen].bounds), TABLE_HEADER_HEIGHT);
[self.tableView setTableHeaderView:self.viewTableHeader];

我希望我的桌头高度固定。但在运行此代码时,我得到的是:enter image description here

tableview标题位于两个黑色边框之间。蓝色背景是imageview的背景。因此,tableviewheader没有获得imageView的正确高度。经过一些教程后,我在viewDidLayoutSubviews

中找到了以下方法
    -(void)updateTableHeaderFrame{
    UIView *headerView = self.tableView.tableHeaderView;
    [headerView setNeedsLayout];
    [headerView layoutIfNeeded];
    if (headerView) {
        CGFloat height = [headerView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height;
        CGRect headerFrame = headerView.frame;

        if (height!=headerFrame.size.height) {
            headerFrame.size.height = height;
            headerView.frame = headerFrame;
            self.tableView.tableHeaderView = headerView;
        }
    }
}

它解决了我的问题。

但是我必须为我的所有iphone使用3x图像。当这个'CGFloat height = [headerView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize] .height;得到图像的实际高度,即3 * 193 = 579。结果tableview标题的高度变为579。 请帮忙!

1 个答案:

答案 0 :(得分:0)

为什么不使用viewForHeaderInSection?

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{

    UIImage *myImage = [UIImage imageNamed:@"loginHeader.png"];
    UIImageView *imageView = [[UIImageView alloc] initWithImage:myImage] ;
    imageView.frame = CGRectMake(10,10,300,100);

    return imageView;

}

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    return 100;
}