Я только что понял, что мое табличное представление работает неправильно после проверки моего приложения на нескольких устройствах.В настоящее время я работаю над представлением, которое содержит представление прокрутки вверху и представление таблицы внизу.
Когда я создавал View, я работал с Iphone XS Max в качестве тестового устройства, и все работало нормально.Однако, когда устройство становится меньше, табличное представление начинает делать странные вещи.
Вот как я хочу, чтобы табличное представление выглядело:
Табличное представление на Iphone XS Max
На меньших устройствах цвет фона последней ячейки табличного представления не зеленый (какой он должен быть в соответствии с кодом), вместо этого он имеет тот же цвет, что и первая ячейка.
КогдаЯ прокручиваю назад до вершины, первая ячейка имеет цвет, который должна иметь последняя ячейка в соответствии с моим кодом
Вот мой cellForRowAt IndexPath
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "GruppenCell", for: indexPath) as! GroupCell
cell.bgView.backgroundColor = nil
cell.bgView.layer.cornerRadius = 10
cell.bgView.clipsToBounds = true
cell.selectionStyle = .none
if(indexPath.row == 0) {
cell.bgView.setGradientBackground(colorOne: UIColor.white
, colorTwo: KitaGruppen.Spatzen().color, bounds_object: cell.bgView)
cell.groupLabel!.text = "Spatzen"
cell.iconImageView?.image = UIImage(named: "SpatzIcon")
}
else if(indexPath.row == 1) {
cell.bgView.setGradientBackground(colorOne: UIColor.white
, colorTwo: KitaGruppen.Elefanten().color, bounds_object: cell.bgView)
cell.groupLabel!.text = "Elefanten"
cell.iconImageView?.image = UIImage(named: "elefantIcon")
}
else if(indexPath.row == 2) {
cell.bgView.setGradientBackground(colorOne: UIColor.white
, colorTwo: KitaGruppen.Mäuse().color, bounds_object: cell.bgView)
cell.groupLabel!.text = "Mäuse"
cell.iconImageView?.image = UIImage(named: "mouseIcon")
}
else if(indexPath.row == 3) {
cell.bgView.setGradientBackground(colorOne: UIColor.lightGray
, colorTwo: KitaGruppen.Pferde().color, bounds_object: cell.bgView)
cell.groupLabel!.text = "Pferde"
cell.iconImageView?.image = UIImage(named: "horseIcon")
print("Ich bin der Pferd Index")
}
else if(indexPath.row == 4) {
cell.bgView.setGradientBackground(colorOne: UIColor.lightGray
, colorTwo: KitaGruppen.Frösche().color, bounds_object: cell.bgView)
cell.groupLabel!.text = "Frösche"
cell.iconImageView?.image = UIImage(named: "FrogIcon")
}
else {
cell.bgView.setGradientBackground(colorOne: UIColor.lightGray
, colorTwo: UIColor.white, bounds_object: cell.bgView)
}
return cell
}
Вот мой Struct для цветов
struct KitaGruppen {
struct Spatzen{
var name = "Spatzen"
var name_lower = "spatzen"
var color = #colorLiteral(red: 1, green: 0.871347487, blue: 0, alpha: 1)
}
struct Elefanten{
var name = "Elefanten"
var name_lower = "Elefanten"
var color = #colorLiteral(red: 0, green: 0.3798098862, blue: 1, alpha: 1)
}
struct Pferde{
var name = "Pferde"
var name_lower = "pferde"
var color = #colorLiteral(red: 1, green: 0, blue: 0, alpha: 1)
}
struct Frösche{
var name = "Frösche"
var name_lower = "frösche"
var color = #colorLiteral(red: 0.5412063003, green: 0.9987080693, blue: 0.2685243189, alpha: 1)
}
struct Mäuse{
var name = "Mäuse"
var name_lower = "Mäuse"
let color = #colorLiteral(red: 0.9411764741, green: 0.4980392158, blue: 0.3529411852, alpha: 1)
}
}
Вот мой класс ячеек
class GroupCell: UITableViewCell {
override func prepareForReuse() {
super.prepareForReuse()
self.iconImageView.image = nil
self.groupLabel.text = ""
self.bgView.setGradientBackground(colorOne: UIColor.white
, colorTwo: KitaGruppen.Spatzen().color, bounds_object: self.bgView)
}
Я добавил метод prepareForReuse, чтобы исправить эту ошибку, но он не оказал никакого влияния.
Я не знаю, еслиэто важно, но вот мой метод setGradientBackground:
func setGradientBackground(colorOne: UIColor, colorTwo: UIColor, bounds_object: UIView){
let gradientLayer = CAGradientLayer()
gradientLayer.frame = bounds_object.bounds
gradientLayer.colors = [colorOne.cgColor, colorTwo.cgColor]
gradientLayer.locations = [0.0, 1.0]
gradientLayer.startPoint = CGPoint(x: 1.0, y: 1.0)
gradientLayer.endPoint = CGPoint(x: 0.0, y: 0.0)
layer.insertSublayer(gradientLayer, at: 0)
}
Странно то, что единственными данными в ячейках, которые имеют эту ошибку, является цвет градиента.Текст для текстовой метки, а также значки вообще не перепутываются.
Кто-нибудь знает какое-нибудь решение для этого?
Спасибо за помощь!