TableView背景保持白色

时间:2016-10-13 14:05:45

标签: ios swift uitableview

我的视差效果有问题。我在tableView上面有一个tableView和一个ImageView。现在,当用户从顶部滚动时,我想稍微拉伸图像。但问题是我的tableView保持白色背景,就像你在屏幕截图上看到的那样。因此图像不可见。屏幕截图是在视图控制器加载时拍摄的,然后我尽可能地向下拉。 tableView有backgroundColor .clear所以我不知道它为什么不工作。

我的代码:

import UIKit
import PureLayout
class ViewController: UIViewController {

    lazy var headerImageView: UIImageView = {
        let imageView = UIImageView(forAutoLayout: ())
        imageView.image = UIImage(named: "test")
        imageView.contentMode = .scaleAspectFill
        imageView.clipsToBounds = true

        return imageView
    }()

    lazy var tableView: UITableView = {
        let tableView = UITableView(forAutoLayout: ())

        tableView.delegate = self
        tableView.dataSource = self
        tableView.separatorStyle = .none
        tableView.isOpaque = false
        tableView.backgroundColor = .clear

        tableView.register(UITableViewCell.self, forCellReuseIdentifier: "default")
        tableView.tableFooterView = UIView()
        tableView.showsVerticalScrollIndicator = false

        return tableView
    }()

    override func viewDidLoad() {
        super.viewDidLoad()

        self.view.addSubview(self.headerImageView)

        self.headerImageView.autoPinEdge(toSuperviewEdge: .left)
        self.headerImageView.autoPinEdge(toSuperviewEdge: .right)
        self.headerImageView.autoPin(toTopLayoutGuideOf: self, withInset: 0)

        self.headerImageView.autoSetDimension(.height, toSize: 100)

        self.view.addSubview(self.tableView)
        self.tableView.autoPinEdge(toSuperviewEdge: .left)
        self.tableView.autoPinEdge(toSuperviewEdge: .right)
        self.tableView.autoPinEdge(toSuperviewEdge: .bottom)
        self.tableView.autoPinEdge(.top, to: .bottom, of: self.headerImageView)
    }
}

extension ViewController: UITableViewDelegate, UITableViewDataSource {
    func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 20
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "default", for: indexPath)
        cell.textLabel?.text = "test"
        cell.backgroundColor = .red

        return cell
    }

    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        return 50
    }
}

extension ViewController: UIScrollViewDelegate {

    func scrollViewDidScroll(_ scrollView: UIScrollView) {
        // Parallax functionality
        let yOffset = scrollView.contentOffset.y * 0.2
        let availableOffset = min(yOffset, 60)
        let contentRectYOffset = availableOffset / self.headerImageView.frame.size.height
        self.headerImageView.layer.contentsRect = CGRect(x: 0.0, y: contentRectYOffset, width: 1, height: 1)
    }
}

enter image description here

0 个答案:

没有答案