UITableView部分背景?

时间:2012-07-29 15:08:31

标签: iphone objective-c ios uitableview

是否可以在UITableView中的某个部分后面使用背景图像?

我无法想到如何实现这一目标。

3 个答案:

答案 0 :(得分:5)

您可以在表格视图后面放置一个视图,将表格视图的背景颜色设置为[UIColor clearColor],您将看到背后的视图

[self.view addSubview:self.sectionBackgroundView];
[self.view addSubview:self.tableView];
self.tableView.backgroundColor = [UIColor clearColor];

这个缺点是,这不仅仅局限于你想要的部分,我可以想到的一种方法是确保这个支持视图仅限于一个部分,只是将支持视图的框架调整为每当滚动表视图时,该部分覆盖的区域

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    CGRect sectionFrame = [self.tableView rectForSection:sectionWithBackground];
    self.sectionBackgroundView.frame = sectionFrame;
}

您需要在开始时(可能在viewWillAppear :)中执行此操作,以确保视图正确启动。

答案 1 :(得分:0)

要在UITableView的部分后面添加背景图片以使其滚动,请在viewDidAppear中编写

let frame = tableView.rect(forSection: 0)
let view = UIView(frame: frame)
let imgView = UIImageView(frame: view.bounds)

// Assign image here ...

view.addSubview(imgView)

tableView.addSubview(view)
tableView.sendSubviewToBack(view)

注意:保持表格视图单元格的背景颜色清晰,以便可见背景视图

答案 2 :(得分:0)

Swift 5
在表视图中更新数据后编写以下代码:

        let frame = tableView.rect(forSection: 0)
        let backgroundView = UIView(frame: frame)
        let imageView = UIImageView(frame: view.bounds)
        imageView.image = your image
        backgroundView.addSubview(imageView)
        tableView.addSubview(backgroundView)
        tableView.sendSubviewToBack(backgroundView)
        tableView.backgroundColor = .clear

之后,您需要在 willDisplaycell 方法中将单元格放在前面,如下所示:

func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
        tableView.bringSubviewToFront(cell)
}