Swift - tableView с цветом фона для верхней - PullRequest
0 голосов
/ 24 августа 2018

Я действительно не знаю, как описать мою проблему, поэтому вот видео:

enter image description here

У меня есть tableViewController, и я бывот так оранжевый цвет будет красным сверху и белым снизу.Я пытался изменить цвет фона (оранжевым), и это не то, что мне могло бы понравиться ...

Знаете ли вы, возможно ли это сделать, учитывая, что иногда текст в красном разделе может быть действительнокоротко, и мы можем видеть как верхнюю, так и нижнюю часть tableViewController

Ответы [ 2 ]

0 голосов
/ 24 августа 2018

Добавьте красное представление к тому же родительскому представлению представления таблицы и установите положение, чтобы быть наверху представления таблицы. его ширина должна быть равна ширине представления tablview, а высота должна изначально равняться 0. Используя делегат с прокруткой, установите высоту красного представления на max (-scrollView.contentOffset.y, 0). Установите цвет фона табличного представления на белый.

0 голосов
/ 24 августа 2018

Вот пример кода.Измените его для вашего контроллера представления.

import UIKit

class ViewController: UIViewController {

// Count your number of cells from your array. 3 its just example.
private let numberOfRedCells: CGFloat = 3
private let cellHeight: CGFloat = 50

var defaultOffSet: CGPoint?
var defaultHeightConstraint: NSLayoutConstraint!

lazy var tableView: UITableView = {
    let tableView  = UITableView(frame: self.view.frame)
    // Important. Clear backgroundColor.
    tableView.backgroundColor = .clear
    tableView.separatorStyle = .none
    tableView.dataSource = self
    tableView.delegate = self
    return tableView
}()

lazy var redView: UIView = {
    let rv = UIView()
    rv.backgroundColor = .red
    return rv
}()

override func viewDidLoad() {
    super.viewDidLoad()


    tableView.register(UITableViewCell.self, forCellReuseIdentifier: NSStringFromClass(UITableViewCell.self))

    view.addSubview(redView)
    setupConstraints()
    view.addSubview(tableView)
}

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)

    defaultOffSet = tableView.contentOffset
}

private func setupConstraints() {
    redView.translatesAutoresizingMaskIntoConstraints = false
    let top = NSLayoutConstraint(item: redView, attribute: .top, relatedBy: .equal, toItem: view, attribute: .top, multiplier: 1, constant: 0)
    let left = NSLayoutConstraint(item: redView, attribute: .left, relatedBy: .equal, toItem: view, attribute: .left, multiplier: 1, constant: 0)
    let right = NSLayoutConstraint(item: redView, attribute: .right, relatedBy: .equal, toItem: view, attribute: .right, multiplier: 1, constant: 0)
    let bottom = NSLayoutConstraint(item: redView, attribute: .bottom, relatedBy: .equal, toItem: view, attribute: .bottom, multiplier: 1, constant: 0)
    view.addConstraints([top, left, right, bottom])
}

}

extension ViewController: UITableViewDataSource {

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

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: NSStringFromClass(UITableViewCell.self), for: indexPath)
    // Your red type cells, equals 3 just for example
    if indexPath.row < 3 {
        cell.backgroundColor = .red
        cell.textLabel?.text = "Input your text here"
    } else {
        // Your white type cells
        cell.backgroundColor = .white
        cell.textLabel?.text = "Your information"
    }

    return cell
}

}

extension ViewController: UITableViewDelegate {

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

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    let contentYoffset = scrollView.contentOffset.y + 20 // 20 - statusBar height

    if contentYoffset > 0 {
        self.redView.frame.size.height = 20
    } else {
        self.redView.frame.size.height = cellHeight * numberOfRedCells - contentYoffset
    }
}

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    tableView.deselectRow(at: indexPath, animated: true)
}

}

Вот что у меня есть. введите описание ссылки здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...