Zerk раздела таблицы при прокрутке с использованием UIEdgeInsets - PullRequest
0 голосов
/ 30 сентября 2019

В своем приложении я использовал эффект параллакса для таблицы. Поэтому я использовал с UIEdgeInsets, чтобы показать эффект. Это идеальная работа без секции, но когда я попытался с секцией, она выглядела ужасно, и секция получала зерк при прокрутке вверх и вниз. Я прикрепил клип для большего зазора. И я использовал ниже код. ссылка Пожалуйста, помогите мне

override func viewDidLoad()
    {
        super.viewDidLoad()

        tblItemList.contentInset = UIEdgeInsets(top: 200, left: 0, bottom: 0, right: 0)

        imageView.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.size.width, height: 200)
        imageView.image = UIImage.init(named: "32621859132_25f783b550_o.jpg")
        imageView.contentMode = .scaleAspectFill
        imageView.clipsToBounds = true
        //imageView.backgroundColor = .white
        view.addSubview(imageView)
    }

extension RestaurantDetailsVC : UITableViewDataSource, UITableViewDelegate
{
    func numberOfSections(in tableView: UITableView) -> Int {
        return 3
    }
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 5
    }
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
    {
        let cell = tableView.dequeueReusableCell(withIdentifier: "ItemCell", for: indexPath) as! ItemCell

        return cell
    }
    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        return 105
    }
    func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?
    {
        let cell = tableView.dequeueReusableCell(withIdentifier: "ItemSectionCell") as! ItemSectionCell
        cell.backgroundColor = .white
        return cell
    }
    func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
        return 44
    }


    //Scrollview delegate
    func scrollViewDidScroll(_ scrollView: UIScrollView)
    {
        let y = 200 - (scrollView.contentOffset.y + 200)
        let height = min(max(y, 0), 300)
        imageView.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.size.width, height: height)

        if height <= 0
        {
            UIView.animate(withDuration: Double(0.1), animations: {
                self.constraintTopForViewBar.constant = 0
                self.viewForTopBar.isHidden = false
                self.view.layoutIfNeeded()
                }) { (result) in}

            self.tblItemList.contentInset = UIEdgeInsets(top: 68, left: 0, bottom: 0, right: 0)
        }
        else
        {
            UIView.animate(withDuration: Double(0.1), animations: {
                self.constraintTopForViewBar.constant = -68
                self.viewForTopBar.isHidden = true

                self.view.layoutIfNeeded()
            }) { (result) in}

            self.tblItemList.contentInset = UIEdgeInsets(top: 200, left: 0, bottom: 0, right: 0)
        }

        //print(height)
    }
}
...