UITableViewのセクションの背後で背景画像を使用することは可能ですか?
これを実現する方法が思いつかない。
テーブルビューの後ろにビューを配置し、テーブルビューの背景色を[UIColor clearColor]に設定すると、後ろのビューが表示されます。
[self.view addSubview:self.sectionBackgroundView];
[self.view addSubview:self.tableView];
self.tableView.backgroundColor = [UIColor clearColor];
これの欠点は、これが必要なセクションだけに限定されないことです。このバッキングビューが1つのセクションのみに限定されるようにする方法のひとつは、バッキングビューのフレームをカバーされる領域に調整することです。テーブルビューがスクロールされるたびのセクション
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
CGRect sectionFrame = [self.tableView rectForSection:sectionWithBackground];
self.sectionBackgroundView.frame = sectionFrame;
}
ビューが正しく開始されることを確認するために、最初に(おそらくviewWillAppear:)でもこれを行う必要があります。
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)
注:背景ビューが表示されるように、テーブルビューセルの背景色をクリアに保ちます
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)
}